直接插入排序

  1. 算法思想

    对于一组数据,只有一个数时,一定有序。因此只需要从第二个数开始确定它在有序序列中的位置,然后将其移到该位置

  2. 算法实现步骤

/**
 * 直接插入排序(从小到大)
 * 从第二位开始,依次向前比较,如果遇到比它大的移动位置
 */
public static void insertDirectly(int[] A) {
    int[] array = A;
    System.out.println("初始:");
    inputArray(array);
    int len = array.length;
    for (int i = 1; i < len; i++) {

        // 0 到 i - 1 这个序列一定是有序的,若 array[i] > array[i - 1] 此时的元素已经在它应在的位置上
        // 所以只需要考虑当前元素在有序序列中的位置
        for (int j = i; j > 0 && array[j] < array[j - 1]; j--) {
            array[j] = array[j] ^ array[j - 1];
            array[j - 1] = array[j] ^ array[j - 1];
            array[j] = array[j] ^ array[j - 1];
        }
    }
    System.out.println("直接插入排序:");
    
    inputArray(array);
}