简单来说:就是每次从剩余未排序的元素中找最小的,放到最左位置
public class SelectSort {
public static void display(List<Integer> array){
for(int i=0;i<array.size();i++){
System.out.print(array.get(i)+" ");
}
System.out.println();
}
public static void sort(List<Integer> array){
for(int i=0;i<array.size()-1;i++){
int min = array.get(i);//初始化当前值为最小值
int minIndex = i;
for(int j=i+1;j<array.size();j++){
if(array.get(j)<min){
min = array.get(j);
minIndex = j;
}
}
if(minIndex != i){//说明i处不是最小值,需要交换
array.set(minIndex,array.get(i));
array.set(i,min);
}
}
}
public static void main(String[] args){
List<Integer> array = new ArrayList<Integer>(Arrays.asList(77,99,44,55,22,88,11,0,66,33));
display(array);
sort(array);
display(array);
}
}
选择排序的时间复杂度与冒泡排序一样都是o(N^2)。但交换的次数比冒泡排序少的多,所以更快一点