介紹
- 選擇待排序序列中選擇最小的元素,然後和待排序序列的第一個元素交換位置
- 將剩下的待排序序列中選擇最小的元素,和待排序序列的第二個元素交換位置
- 重複以上步驟,直到將整個序列都排序。
因爲在不斷的選擇剩餘最小的元素,所以稱之爲選擇排序
算法特點
- 不穩定排序
- 交換次數固定爲
n-1
次交換 - 比較次數也固定爲
(n-1)*n/2
次 - 算法複雜度爲:O(n^2)
- 選擇排序的時間複雜度和數據的輸入無關
代碼示例-Java
/**
* 簡單選擇排序
* @param nums
* @return
*/
public static void selectSort(int[] nums){
if (nums == null || nums.length <= 0) return;
int minIndex, temp;
for (int i = 0; i < nums.length ; i++){
minIndex = i;
for (int j = i + 1; j < nums.length; j++){
if (nums[j] < nums[minIndex]){
minIndex = j;
}
}
temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
}