算法之插入排序(java实现)

  • Post author:
  • Post category:java


插入排序类似于我们平时打牌,我们首先拿起来第一张牌,之后拿起第二张牌并跟第一张牌比较,如果大于第一张牌,就放在第二,否则放在第一,之后依次找到他们的位置。

假设现在有一个数组A,我们首先取出来第一个元素作为我们手里的第一张牌B{a},此时我们手里的牌是已经经排好序的,此时拿出来数组A中的第二个元素,放到子数组B{a},并跟A做比较排序,此时,子数组B依然是排好序的,依次类推B{a…r}子数组不论在任何时候都是一个排好序的数组,并且每次都是增加的。

public class InsertionSort {
    public static void main(String[] args) {
        int[] a = {10, 6, 4, 5, 8, 9, 7, 2, 3, 1};
        sortAsc(a);
    }

    static void sortDesc(int[] a) {
        for (int j = 1; j < a.length; j++) {
            int key = a[j];
            int i = j - 1;
            while (i >= 0 && a[i] > key) {
                a[i + 1] = a[i];
                i = i - 1;
            }
            a[i + 1] = key;
        }

        for (int i : a) {
            System.out.println(i);

        }
    }

    static void sortAsc(int[] arr) {
        for (int j = 2; j < arr.length; j++) {
            int key = arr[j];
            int i = j - 1;
            while (i >= 0 && arr[i] < key) {
                arr[i + 1] = arr[i];
                --i;
            }
            arr[i + 1] = key;
        }

        for (int i : arr) {
            System.out.println(i);
        }
    }
}



版权声明:本文为weixin_43191162原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。