選擇排序-最簡單的排序
阿新 • • 發佈:2019-05-08
for 時間復雜度 選擇排序 lec nbsp 如果 循環 選擇 兩層
選擇排序
時間復雜度是O(n²)
空間復雜度:O(1)
選擇排序的核心思想:
兩層循環
外層循環: 遍歷數組,並假定一個最小數的下標,即下標為min = i.在內層循環之後,將array[i]和array[min]交換位置
內層循環: 遍歷i之後的元素,比較array[i+1]和min,如果array[i+1]<array[i],將最小數的下標置為 i+1,經過一次遍歷之後,最後的array[min] 就是本次取出來的最小的數
也就是說 在一次外層循環之後,就找到一個最小的數放在最前面,第二次循環找到第二小的數,以此類推!
偽代碼實現:
1 publci static void selectedSort(int[] array){ 2 3 for(int i=0;i<array.length;i++){ 4 5 int min = i; 6 for(int j=i+1;j<array.length;j++){ 7 if(array[j]<array[min]){ 8 9 min = j; 10 }11 12 } 13 //將最小數交換到最前面 14 exchange(array,i,min); 15 16 } 17 18 }
選擇排序-最簡單的排序