选择排序就是为每一个位置找值,从小到大
不稳定
如果相同两个数的先后顺序被破坏就是不稳定的!
举个栗子
序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法
时间复杂度是O(n2)
简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数总是N (N - 1) / 2。
而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0.
当序列反序时,移动次数最多,为3(N - 1) 。
所以,综合以上,简单排序的时间复杂度为 O(N2)。
import java.util.*;
public class Main {
static int selection_sort(int[] unsorted) {
int length = unsorted.length;
for(int i=0;i<length-1;i++) {
int k=i ;
int temp;
for(int j=i+1;j<length-1;j++) {
if(unsorted[j]<unsorted[k]) {
k = j;
}
}
if(k!=i) {
temp = unsorted[k];
unsorted[k] = unsorted[i];
unsorted[i] = temp;
}
}
for(int i=0;i<length;i++) {
System.out.print(unsorted[i]+" ");
}
return 1;
}
public static void main(String[] args) {
int[] a = {2,7,3,9,6,9};
selection_sort(a);
}
}