插入排序:该排序是把序列中的值插入一个已经排好的序列中,直到序列的结束。
a.直接插入排序:该排序是对冒泡排序的改进,它比冒泡排序快2倍。一般不用在数据大于1000的场合下使用插入排序,或者重复排序超过200数据项的序列。
详细请见代码:
b.希尔排序( shell sort ):sheell排序通过将数据分成不同的组,先对每一组排序进行排序,然后再对所有的元素进行一次插入排序,以减少数据交换和移动的次数。平均效率是O( nlogn )。其中分组的大小对算法产生重要影响。现在多用D.E.Knuth分组方法。
Shell排序比冒泡排序快5倍,比插入排序大致快2倍。Shell排序比起QuickSort,MergeSort(归并排序),HeapSort慢很多。但是它的实现比较简单,它适合于数据量在5k以下并且速度并不是特并重要的场合。它对于数据量较小的数列重复排序是非常好的。
详细请见代码: