排序-插入排序

插入排序比较适用于 有序的输入

插入排序是和整理纸牌的时候是一样的
当摸一张牌的时候,把当前这张牌插入到指定位置

可以拿这张牌的值和前面的比较,如果比前面的牌小则和前面的牌交换

此时j-1 ,当前牌索引也因交换-1
当出现当前牌大于前面的牌(因为前面的牌从小到大排序,出现大于则已经到正确的位置了)则跳出

@Test
    public void test(){
        int[] a = {4, 2, 5, 3, 1, 0};
        sort(a);
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + ",");
        }
    }
    public void sort(int[] a){
        for (int i = 1; i < a.length; i++) {
            for (int j = i; j > 0 && less(a[j], a[j - 1]); j--) {
                exch(a, j, j-1);
            }
        }

    }
    
    private boolean less(int i, int j) {
        return i > j ? false : true;
    }

    private void exch(int[] a, int m, int n) {
        int tmp = a[m];
        a[m] = a[n];
        a[n] = tmp;
    }   

你可能感兴趣的:(排序-插入排序)