选择排序
原理
1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3、重复第二步,直到所有元素均排序完毕。
时间复杂度
O(n^2),稳定排序;
API模板
package DataStructureAndAlgorithm.Sort.SimpleSort;
/**
* 选择排序
*/
public class Selection {
//排序
public static void sort(Comparable[] c){
for(int i=0;i<c.length-2;i++){
int minIdx=i;
for (int j=i+1;j<c.length;j++){
if(greater(c[minIdx],c[j])){
minIdx=j;
}
}
exch(c,i,minIdx);
}
}
//判断前者是否大于后者
private static boolean greater(Comparable c1 ,Comparable c2){
return c1.compareTo(c2)>0;
}
//交换顺序
private static void exch(Comparable[] c,int i,int j ){
Comparable temp =c[i];
c[i]=c[j];
c[j]=temp;
}
}