排序-选择排序

2017-10-09  本文已影响0人  KeDaiBiaO1

拿一个元素(当前元素)和剩下的(除去排好序的)比较,获得最小值索引 然后和当前元素交换

注意:
开始取a[i] 为a[min] ,a[min] 和a[i→n]第一个比较 ,不过不是和全部的比较
因为a[i→n]比a[0]小的有很多,
应该是取到一个比a[min]小的值 要把当前索引赋值给min 然后继续遍历
遍历完内层循环后就会得到最小值的索引,然后和a[i]交换

    @Test
    public void test(){
        int[] a = {4, 2, 5, 3, 1, 0};
        selection(a);
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + ",");
        }
    }
    public void selection(int[] a){
        for (int i = 0; i < a.length; i++) {
            int min = i;
            for(int j = i + 1; j < a.length; j++){
                if(less(a[j], a[min])){
                    min = j;
                }
            }
            exch(a, i, min);
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读