主要分为两种:
① 简单插入排序法;
基本思想:所谓插入排序,是指将无序序列中的各元素依次插入到已经有序的线性表中。
一般来说,假设线性中前j-1元素已经有序,现在要将线性表中第j个元素插入到前面的有序子表中,插入过程如下:
道德将第j个元素放到一个变量T中,然后从有序子表的最后一个元素(即线性表中第j-1个元素)开始,往前逐个与T进行比较,将大于T的元素均依次向后移动一个位置,直到发现一个元素不大于T为止,此时就将T(即原线性表中的第j个元素)插入到刚移出的空位置上,有序子表的长度就变为j了。效率与冒泡法相同
在最坏情况下,简单插入排序需要n(n-1)/2次比较。
② 希尔排序法;
基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序。
子序列的分割方法如下:
将相隔某个增量H的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当H减到1时,进行一次插入排序,排序就完成。增量序列一般取h=n/2k(k=1,2,…【log2n】,其中n为待排序序列的长度。
其效率与增量序列有关。 在最坏情况下,需要的比较次数为O(N^1.5)。