概述
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的末端位置,直到全部待排序的数据元素排完。
平均复杂度
平均时间复杂度是O(n^2)
算法稳定性
选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)
示例代码
/**
* 选择排序
* @author 吴庆龙
* Date: 2018/8/2
* Time: 9:43
*/
public class SelectSort {
public static void main(String[] args) {
int[] array = {7,3,2,4,1,8,0,9,5,6};
sort(array);
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
}
private static void sort(int[] array) {
// 获取最右边的下标
int right = array.length - 1;
for (int i = 0; i <= right; i++) {
// 默认最小值 array[i]
int minIndex = i;
// 遍历整个数组寻找比 array[minIndex] 还小的值的索引
for (int k = minIndex; k <= right; k++) {
if (array[minIndex] > array[k]) {
minIndex = k;
}
}
// 交换假设的最小值和真正的最小值
if (minIndex != i) {
int temp = array[minIndex];
array[minIndex] = array[i];
array[i] = temp;
}
}
}
}
选择排序的主要思想就是遍历未排序的数组选择出最小或者最大的一个元素,放入已排序数组的末端。