时间复杂度(平均):O(n²)
空间复杂度:O(1)
算法稳定性:不稳定
(举例:序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了,所以选择排序是一个不稳定的排序算法。)
算法原理:它的工作原理是每一次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
与冒泡排序区别:
冒泡排序实质是两两交换,选择排序是选择最小(大)的,虽然最终的结果都是将最小(大)的元素放到数列一端,但是原理并不相同,导致算法稳定性不同。
代码:
public static void select_sort(int array[]){
int n=array.length;
for(int i=0;i<n;i++){
int min=i;
for(int j=i+1;j<n;j++){
if(array[j]<array[min]){
min=j;
}
}
if(i!=min){
swap(array,i,min);
}
}
}
private static void swap(int[] array, int i, int j) {
int a=array[i];
array[i]=array[j];
array[j]=a;
}