演算法 03 選擇排序

2021-07-22 03:45:23 字數 469 閱讀 2031

選擇排序(selection sort)和插入排序類似,插入排序將無序放在有序中去排列,而選擇排序則是在無序中選擇有序,去擴大有序。

顧名思義,就是在無序區中,每次選擇最大(最小)放在排列好的最大(最小)中。

同樣可以用巢狀for()來解決。

for(i=0; i

i++)

for(j=i+1; j

j++)

for(i)遍歷所有元素,從中選擇出最大(最小)的元素;

迴圈i次後,i個元素排好序,所以每次for(j)從i+1次位置出發。

參考學習

白話經典演算法系列之四 直接選擇排序及交換二個資料的正確實現

效能分析

平均時間複雜度:o(n^2)

空間複雜度:o(1)

穩定性:不穩定

查詢與排序03,選擇排序

選擇排序是一種低效的排序演算法,大致過程是 遍歷陣列的每乙個元素,先假設0號位置上的元素是最小的,並把0號索引賦值給乙個表示最小元素索引的變數,比如說是smallest,再遍歷0號位置以後的元素,一旦發現有比0號位置元素更小的元素,就把該元素的索引賦值給smallest,繼續遍歷,最終把0號位置以後...

演算法 選擇排序,例項分析選擇排序演算法

選擇排序,將乙個序列看做兩個部分,前面有序,後面無序,每次在後面的無序序列中,選擇乙個最小的元素,交換到前面有序序列的末尾,直到無序序列全部完成交換,即可完成排序 選擇排序是不穩定的排序演算法 有乙個序列 5,2,0,1,3,1,4 第一趟排序 第二趟排序 此時我們看到,經過兩趟排序,前面兩個元素 ...

排序演算法 選擇排序

private static int leftchild int i private static void perc int a,int i,int n for int i 0 ir j break else public static void heasp int r,int n for i 0...