簡單選擇排序演算法思想:假設排序表為l[1…n],第i趟排序即從l[i…n]中選擇關鍵字最小的元素與l[i]交換,每一趟,可以確定乙個元素的最終位置,這樣n-1趟排序就可以使得整個排序表有序。
例子:3 [4] 4 1 5
第1趟排序結果:1 [4] 4 3 5
第2趟排序結果:1 3 4 [4] 5
第3趟排序結果:1 3 4 [4] 5
第4趟排序結果:1 3 4 [4] 5
(ps:第一次排序後將排序表分為了兩部分,一部分是以1為元素的有序表,另外一部分是剩餘部分的無需表。後面每次排序類似。)
void selectionsort(int list)
}// 將找到的第i個小的數值放在第i個位置上
temp = list[index];
list[index] = list[i];
list[i] = temp;
}}
簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 n 個元素,則比較次數總是n (n - 1) / 2。
而移動次數與序列的初始排序有關。當序列正序時,移動次數最少,為 0.
當序列反序時,移動次數最多,為3n (n - 1) / 2。
所以,綜合以上,簡單排序的時間複雜度為 o(n2)。
僅僅使用常常數個輔助單元,故而空間複雜度為o(1)
(1)由手工模擬可知,該演算法不穩定。
(2)簡單選擇排序和氣泡排序不同,簡單選擇排序使用乙個變數儲存當前的最小值,最後將該值放在最合適的位置上。氣泡排序,每次如果前者大於後者,則將後者與前者交換。即,簡單選擇排序,每次排序後除了最小值和當前位置值,其他元素位置不變。而氣泡排序可能很多元素的位置都發生了變化。
[1] victor zhang 2015.11.2
[2] 王道論壇編組.2023年資料結構聯考複習指導[m].北京:電子工業出版社,2014.5:282-283
排序演算法 選擇排序 簡單選擇排序
package 選擇排序 簡單選擇排序 不穩定 基本思想 在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換 然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。public class 簡單選擇排序 system.out.println 排序之前 f...
排序演算法 簡單選擇排序
簡單選擇排序是一種選擇排序。1.簡單選擇排序的定義 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止。2.簡單選擇排序的流程 例項 注 紅色數字是位置發生變化的數值。3.簡單選擇排序的 實現 public class selectsort 若min有變化,...
排序演算法 簡單選擇排序
簡單選擇排序法就是通過n i次關鍵字比較,找到最小的關鍵字下標,最後在替換n i下標和最小下標的值。簡單排序的思想和氣泡排序的思想的區別是氣泡排序是相鄰關鍵字兩兩比較,如果小,則直接替換,可能在一輪迴圈會進行多次值交換。而簡單選擇排序法是一輪迴圈找到最小關鍵字下標,最後進行最多一次替換。public...