1.第一次從陣列裡選擇最大或者最小的元素放在第一位。
2.剩餘的元素中再找到最大或者最小的元素依次放在已排序的元素後面。
選擇排序的示例動畫。紅色表示當前最小值,黃色表示已排序序列,藍色表示當前位置。
**git位址
public class selectsort ;
selectsort(arr);
sortutil.printarr(arr);
}private static void selectsort(int arr)
}sortutil.swap(arr, i, max);}}
}public class sortutil
public static void printarr(int arr)}}
時間複雜度分析:
經過0.5n²+0.5n次迴圈完成排序,忽略常數項和低次項,時間複雜度為o(n²)
額外申請的變數僅max,因此空間複雜度為o(1)
最好情況:
整體有序,交換操作執行0次
最壞情況:
整體逆序,交換操作執行n-1次
最好和最壞都會比較n*(n-1)/2次,時間複雜度o(n)
穩定性:
不穩定。如果待排序陣列為 23271,選擇排序,第一次交換第乙個2和7交換位置,排序結果為73221,初始在前的2被交換到後面,說明不穩定。
資料結構和演算法 選擇排序
每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。把最小元素移動到放在已排好序的數列的最後 exch a,i,min public static boolean less comparable c1,comparable c2 pub...
資料結構 排序 選擇排序演算法
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...
資料結構和演算法 氣泡排序和選擇排序
package com.test 1 public class demo5 3 int temp 0 中間值 氣泡排序法 外層迴圈,它決定一共走幾趟 for int i 0 i1 i 輸出結果 for int i 0 iout.print arr i 第一次從r 0 r n 1 中選取最小值,與r ...