排序——选择排序

选择排序

两次循环,大小循环,大循环来控制需要交换的位置,

小循环寻找未排序的序列中的最小值的位置,记录位置,然后与大循环记录的位置进行交换。

 

public class SelectSort {
    public void selectSort(Integer[] arrays){
        if(arrays.length == 0 || arrays == null) return;
        int len = arrays.length;
        for(int i = 0; i < len - 1; i++){
            int min = i;
            for(int j = i + 1; j < len; j++){
                if(arrays[min] > arrays[j]) {
                    min = j;
                }
            }
            if(min != i) swap(arrays, min, i);
        }
    }
}

  

同样存在会多排序的次数

4 2 1 6 3 6 0 -5 1 1
-5 2 1 6 3 6 0 4 1 1
-5 0 1 6 3 6 2 4 1 1
-5 0 1 6 3 6 2 4 1 1
-5 0 1 1 3 6 2 4 6 1
-5 0 1 1 1 6 2 4 6 3
-5 0 1 1 1 2 6 4 6 3
-5 0 1 1 1 2 3 4 6 6
-5 0 1 1 1 2 3 4 6 6
-5 0 1 1 1 2 3 4 6 6(多余的)

posted @ 2018-03-27 16:12  SkyeAngel  阅读(87)  评论(0编辑  收藏  举报