一、实现理论
- 有一个长度为 n 的数组。
- 在 0 到 n-1 位置中找到最小的数,放到位置 0,0 位置的就是有序的。
- 在 1 - 到 n -1 位置中找到最小的数,放到位置 1,0 到 1 的位置就是有序的。
- 继续比较,直至数组中的所有数都有序。
二、代码实现(Java)
public static void selectionSort(int[] arr) {
if(arr == null || arr.length < 2)
return;
for(int i = 0; i < arr.length-1; i++) {
int minindex = i;
for (int j = i + 1; j < arr.length; j++) {
minindex = arr[minindex] > arr[j] ? j : minindex;
}
swap(i, minindex, arr);
}
}
public static void swap(int m, int n, int a[]) {
int temp = a[m];
a[m] = a[n];
a[n] = temp;
}
三、时间复杂度
选择排序的时间复杂度为 O(N^2)