C C 實現選擇排序及優化

2021-09-28 23:28:03 字數 962 閱讀 2080

1.選擇排序描述:選擇排序(selection sort)是一種簡單直觀的排序演算法。

2.原理:每次從未排序的序列中選出最大(小)的乙個放在已排序

的後面。

例如,將一串數字5,4,2,0,7,8,1,3,9,6用選擇排序從小到大排序的步驟如下:

第一步:找出最小數字0,並與第乙個數字5進行交換,得到0,4,2,

5,7,8,1,3,9,6

第二步:在未排序的數字中繼續找出最小值1,並將1與未排序的第乙個數4相交換位置,得到0,1,2,5,7,8,4,3,9,6

第三步:繼續在未排序的數字中繼續找出最小值2,未排序的數字中沒有比2更小的數,故2放在未排序數的第一位,得0,1,2,5,7,8,4,3,9,6

最後將得到0, 1, 2, 3, 4, 5, 6, 7, 8, 9一串已排序的資料,故已排序成功。

3.演算法優化:此演算法中每次挑出最小值放在已排序的後面,如果在選出最小值放在待排序的左面的同時選出最大值放在待排序的右邊。

#include#includeusing namespace std;

void swap(int *arr, int i, int j)

int main(void) ;

for (int left = 0,right= sizeof(arr) / sizeof(int) - 1;leftarr[maxpos] ? j : maxpos;

} swap(arr, left, minpos);

swap(arr, right, maxpos);

} //列印已排序的數字

for (int k = 0;k < sizeof(arr) / sizeof(int);k++)

system("pause");

return 0;

}

選擇排序演算法及優化

選擇排序演算法的思路是 第一次將集合中最小的數挑選出來放在第乙個位置,第二次將集合中最小的數挑選出來放在第二個位置,依此類推。例如 我們需要對進行排序 經過第1次迴圈最小位置是 5 結果是 0,9,5,7,8,2,1,3,4,6 經過第2次迴圈最小位置是 6 結果是 0,1,5,7,8,2,9,3,...

排序演算法 選擇排序及優化版本

在前邊的排序演算法 一 中已經分析過選擇排序,這裡主要是想講解他的優化版本。選擇排序,是通過每次選擇最小的數或者最大的數,然後將它放在它應該出現的位置上。具體實現過程 將0號下標的資料儲存,在之後的數中選擇乙個最小的數,如果最小的數不是0號數,則將最小的數與0號下標的數進行交換 將1號下標的數進行儲...

排序 選擇排序的優化和實現

選擇排序的思想很簡便,排序過程也很直觀。選擇排序是一種不穩定的排序演算法。每一次迴圈調出來乙個最大的或者最小的元素放在整個陣列的最前面或者最後面即可完成整個排序。我們知道,按照選擇排序的思想,每次遍歷都會選擇出來乙個最大 或者最小 的元素放在陣列的一端,那麼我們可以這麼思考一下 我們為什麼不能在遍歷...