算法学习笔记之直接插入排序算法

算法学习笔记之直接插入排序算法

直接插入排序算法原理

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤 2~5

Java 实现

package top.simba1949;

/**
 * 插入排序算法——直接插入排序
 *
 * 直接插入排序算法原理:
 *     1. 从第一个元素开始,该元素可以认为已经被排序
 *     2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
 *     3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
 *     4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
 *     5. 将新元素插入到该位置后
 *     6. 重复步骤 2~5
 *
 * @author SIMBA1949
 * @date 2019/6/29 20:52
 */
public class DirectInsertSort {
    public static void main(String[] args) {
        int[] intArr = {1, 9, 90, 20, 30, 66, 34, 55, 54, 44, 66};
        directInsertSortImpl(intArr);
        for (int i : intArr) {
            System.out.print(i + "\t");
        }
    }

    public static void directInsertSortImpl(int[] original){
        if (null == original || original.length < 2){
            return;
        }

        for (int i = 1; i < original.length; i++) {
            // original[j] < original[j - 1] 从小到大排序
            // original[j] > original[j - 1] 从大到小排序
            for (int j = i; j > 0 && original[j] < original[j - 1]; j--){
                int temp = original[j];
                original[j] = original[j - 1];
                original[j - 1] = temp;
            }
        }
    }
}

你可能感兴趣的:(数据结构与算法)