1 基本原理
遍历数组,每次选择一个最大(最小)的元素放置于队头(队尾),遍历完成后,整个数组有序。
2 具体实现
public static void SelectSort(int[] a){
int hi = a.length -1 ;
for (int i = 0; i <= hi; i++) {
int min = i;
for ( int j = i+1; j <= hi; j++){
if(SortUtil.less(a,j,min)){
min = j;
}
}
SortUtil.swap(a,i,min);
}
}
3 算法分析
使用了两层for循环,时间复杂度是O(N^2),空间复杂度是O(1),不是稳定的排序,比如 5 6 5 2 第一遍排序后第一个5会和最后一个2交换,导致两个5的顺序发生变化。