- 排序算法最理想的时间复杂度是O(nlogn);
- 为什么要学O(n^2)的排序算法?
- 基础;
- 编码简单,易于实现,是一些简单情景的首选;
- 在一些特殊的情况下,简单的排序算法更有效;
- 简单的排序算法思想衍生出复杂的排序算法(希尔排序基于插入排序);
- 作为子过程,改进更复杂的排序算法;
算法描述
- 每一次遍历,找出最小的元素,放在本次遍历的起点;
算法实现
public class SelectionSort {
private SelectionSort() {}
public static void sort(int[] arr) {
for(int i = 0; i < arr.length; i++) {
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
swap(i, minIndex, arr);
}
}
private static void swap(int i, int minIndex, int[] arr) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
public static void main(String[] args) {
int[] arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
输出:
1 2 3 4 5 6 7 8 9 10