插入排序

作者: null12 | 来源:发表于2018-03-21 16:51 被阅读0次

一、定义

插入排序(Insertion Sorting)的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序
具体步骤:

  1. 将数组分为两部分,左侧已有序部分,右侧未排序部分;
  2. 每次从右侧选择第一个数,从右到左依次与左侧的数比较,插入到左侧;
  3. 如此往复,直到整个数组有序。


    1-1 插入排序运行轨迹

二、算法实现

public static void sort(Comparable[] a) {
    int n = a.length;
    for (int i = 0; i < n; i++) {
        for (int j = i; j > 0 && less(a[j], a[j - 1]); j--) {
            exch(a, j, j - 1);
        }
        assert isSorted(a, 0, i);
    }
    assert isSorted(a);
}

三、性能分析

  • 特点
    运行时间与输入有关,数组越有序,所需排序时间越短
    最好的情况下(数组已有序),仅需比较N次,不需要移动;最坏情况下(数组完全逆序),需要移动至少(N2)/2次;
    插入排序对部分有序的数组十分高效,很适合小规模数组,同时也是很多高级排序算法的中间过程
  • 时间复杂度
    O(N2)

相关文章

网友评论

    本文标题:插入排序

    本文链接:https://www.haomeiwen.com/subject/gbggqftx.html