1. 程式人生 > >選擇排序-最簡單的排序

選擇排序-最簡單的排序

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 }

選擇排序-最簡單的排序