算法原理
- 选择排序是一种不稳定的排序方法;
- 首先从待排序的数据元素中选出最小(或最大)的元素,放在已排序序列的起始位置,然后重复在待排序元素中继续选出最小(或最大)的元素,放在已排序序列的末尾;
分析
- n个数字完成排序,需要进行n-1趟排序,使用双层循环,在外层控制循环多少趟并获取内层头部值,内层通过比较选出最小(或最大)值与头部值交换;
- 每进行一趟排序,可以少比较一次;
- 即使n个数据是由小到大的顺序,依然要进行n-1趟排序;
- 平均时间复杂度:O(n2)

代码实现
public class SelectSort {
public static void selectSort(int[] arr) {
if (arr == null || arr.length<=1) {
return;
}
for (int i = 0; i < arr.length-1; i++) {
int tmp;
int index = i;
for (int j = i+1; j < arr.length; j++) {
if (arr[index]>arr[j]) {
index = j;
}
}
tmp = arr[index];
arr[index] = arr[i];
arr[i] = tmp;
}
}
public static void main(String[] args) {
int arr[] = {9,8,6,2,4,6,1,15};
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
}