选择排序(Selection Sort)
- 基本思想
选择最小(大)元素,放到已排序序列尾部位置。 - 算法步骤
- 第一次遍历,在长度为N的无序数组中找到最小(大)元素,与第一个元素交换。
- 第二次遍历,从剩余未排序元素中继续寻找最小(大)元素,然后与第二个元素交换。
- 重复以上动作,直到n-1次遍历,找到最小元素,与第n-1位置元素交换,至此所有元素排序完毕。
-
动图演示
selectionSort.gif 代码实现
public static void selectSort(int[] arr) {
if (null == arr || arr.length < 1) return;
int length = arr.length;
int minIndex, temp;
for (int i = 0; i < length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
- 算法分析
表现最为稳定,无论什么数据进去都是O(n^2)的时间复杂度