1. 程式人生 > >選擇排序之C++實現

選擇排序之C++實現

運行 等於 排序 urn 結束 align 想是 mes 存儲

選擇排序之C++實現

一、源代碼:SelectSort.cpp

 1 /*
 2 選擇排序(從小到大)的基本思想是,首先,選出最小的數,放在第一個位置;
 3 然後,選出第二小的數,放在第二個位置;
 4 以此類推,直到所有的數從小到大排序。
 5 在實現上,我們通常是先確定第i小的數所在的位置,然後,將其與第i個數進行交換。
 6 */
 7 #include<iostream>
 8 using namespace std;
 9 /*定義輸出一維數組的函數*/
10 void print(int array[], int n)
11 {
12     for (int i = 0; i < n; i++)
13 { 14 cout << array[i] << " "; 15 } 16 cout << endl; 17 } 18 19 int selectSort(int array[], int n) 20 { 21 //定義變量,記錄交換次數 22 int count = 0; 23 //假設最小值所在的位置,默認為0,即第一個元素 24 int min_index = 0; 25 //定義中間變量,存儲臨時數據 26 int temp; 27 //遍歷數組(進行排序) 28 cout << "
開始對數組進行排序了..." << endl; 29 for (int i = 0; i < n - 1; i++) 30 { 31 //假設當前的元素是第i小的元素,保存當前位置 32 min_index = i; 33 for (int j = i + 1; j < n; j++) 34 { 35 cout << "" << (i + 1) << "趟第" << (j + 1) << "次排序" << endl;
36 //判斷當前的元素是否小於假設的第i小元素 37 if (array[min_index]>array[j]) 38 { 39 //重新設置第i小的元素位置 40 min_index = j; 41 } 42 } 43 //判斷當前位置的元素是否等於假設的第i小元素,如果不等於則交換這兩個元素 44 if (min_index != i) 45 { 46 temp = array[min_index]; 47 array[min_index] = array[i]; 48 array[i] = temp; 49 cout << array[min_index] << "" << array[i] << "互換了" << endl; 50 //輸出此時數組的順序 51 cout << "數組此時的順序是:"; 52 print(array, 10); 53 //每交換一次,記錄數加1 54 count++; 55 } 56 } 57 cout << "數組排序結束了..." << endl; 58 return count; 59 } 60 61 int main() 62 { 63 //定義待排序的一維數組 64 int array[] = { 1, 3, 4, 5, 2, 6, 10, 9, 8, 7 }; 65 //輸出原始數組 66 cout << "原始數組是:" << endl; 67 print(array, 10); 68 //對數組進行排序 69 int count = selectSort(array, 10); 70 //輸出排序後的數組 71 cout << "排序後的數組是:" << endl; 72 print(array, 10); 73 cout << "共交換" << count << "" << endl; 74 return 0; 75 }

二、運行效果

技術分享

技術分享

技術分享

選擇排序之C++實現