不同於氣泡排序,選擇排序是第乙個位置與後面所有位置的數比較,如果不滿足要求就調換位置,直到第n-1個元素與第n個元素交換位置,選擇排序結束。從演算法邏輯上看,選擇排序是一種簡單直觀的排序演算法,在簡單選擇排序過程中,所需移動記錄的次數相對而言較少。
舉例:用選擇法對十個整數排序(12 34 5 689 -43 56 -21 0 24 65),由大到小。
排序過程:
輸入:12 34 5 689 -43 56 -21 0 24 65
第一步:689 12 34 5 -43 56 -21 0 24 65
第二步:689 65 12 5 -43 34 -21 0 24 56
第三步:689 65 56 12 5 -43 34 -21 0 24
…第九步:689 65 56 34 24 12 5 0 -21 -43
輸出:689 65 56 34 24 12 5 0 -21 -43
c**案例:
#include
void sort(int x, int n)
}}int main()
printf("\n");
return 0;輸出結果:
選擇排序的複雜度:
簡單選擇排序的比較次數與序列的初始排序無關,與移動次數有關。假設待排序的系列有n個元素,則比較次數總是n(n-1)/2;當排序正序時,移動次數最少,為0
當序列反序時,移動次數最多,為3n(n-1)/2;
所以,綜上,簡單排序的時間複雜度為o(n*n);空間複雜度o(1)。
選擇排序它並不耗費額外的記憶體空間,在簡單選擇排序過程中,所需移動記錄的次數比較少。
演算法 選擇排序,例項分析選擇排序演算法
選擇排序,將乙個序列看做兩個部分,前面有序,後面無序,每次在後面的無序序列中,選擇乙個最小的元素,交換到前面有序序列的末尾,直到無序序列全部完成交換,即可完成排序 選擇排序是不穩定的排序演算法 有乙個序列 5,2,0,1,3,1,4 第一趟排序 第二趟排序 此時我們看到,經過兩趟排序,前面兩個元素 ...
氣泡排序,選擇排序,插入排序思想分析
氣泡排序 思想 首先找到乙個最大值或者最小值,然後在剩下的待排序集合中找最大或最小 方法 相鄰的兩個比較,將較大的值向後交換,待第一次迴圈結束,最大值交換到最後乙個,因為是兩兩比較,所以第一次迴圈至少需要比較n 1次,最壞情況下需交換n 1次 隨後每次迴圈,比較次數逐漸減少,直達只剩乙個元素,時間複...
java 氣泡排序和選擇排序的分析
兩種排序方式 現在介紹兩種著名的排序方式 1,氣泡排序 相鄰元素進行比較,較大的往右邊移動 結果就是每一次排序,最大的都會移動到右邊。最後結果就是公升序的序列。如 3,4,2,6,7 第一輪 1,3 4 不變 3,4,2,6,7 2,4 2 交換位置 3,2,4,6,7 3,4 6 不變 3,2,4...