1. 程式人生 > >Kata系列之排序演算法的選擇排序

Kata系列之排序演算法的選擇排序

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;
    }