Kata系列之排序算法的选择排序
/**
* 简单选择排序
* 一个原地(in-place)排序,适用于小文件。
* 由于选择操作时基于键值的且交换操作只在需要时才执行,
* 所以选择排序长用户数值较大和键值较小的文件。
*
* 在未排序序列中找到最小元素,存放到排序序列的起始位置
* 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。
* @param num
* @return
*/
public static int[] selectSort(int[] num){
for(int i=0;i<num.length;i++){
int k=i;
for(int j=i+1;j<num.length;j++){
if(num[k]>num[j]){
k=j;
}
}
tempNum=num[i];
num[i]=num[k];
num[k]=tempNum;
}
return num;
}
/**
* 选择排序【第二版】
* 增加标记判断最小值是否变化
* @param num
* @return
* @author huawangxin
* 2017年12月11日 下午1:40:45
*/
public static int[] selectSort_2(int[] num){
for(int i=0;i<num.length;i++){
int min=i;
for(int j=i+1;j<num.length;j++){
if(num[min]>num[j]){
min=j;
}
}
if(min!=i){
tempNum=num[i];
num[i]=num[min];
num[min]=tempNum;
}
}
return num;
}