簡單選擇排序就是通過n-i次關鍵字間的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i(1<=i<=n)個記錄交換。通俗來講就是在排序的時候找到合適的關鍵字再做交換,並且只移動一次就完成相應關鍵字的排序定位工作。
複雜度分析
- 最大的特點就是交換移動數據次數相當少,這樣就節約了相應的時間。無論最好最差的情況,其比較次數都是一樣的多,第i趟排序需要進行n-i次關鍵字的比較,比較需要n(n-1)/2次。最終排序時間是比較與交換的次數的總和,總的時間複雜度爲O(n2)。
- 儘管與冒泡排序同爲O(n2),但是選擇排序的性能還是略優於冒泡排序。
public void SelectSort(int[] array) {
int min;
for (int i = 0; i < array.length; i++) {
min = i; //當前下標定義爲最小下標
for (int j = i + 1; j < array.length; j++) {
if (array[min] > array[j]) //查找是否有比當前數據小的元素
min = j; //將下標賦給min
}
if (i != min) //如果min!=i,說明找到最小值,交換
swap(array, i, min); //交換兩個值
}
}