排序之希尔排序

来源:互联网 发布:linux cp 两个文件 编辑:程序博客网 时间:2024/05/02 00:14

希尔排序又称为缩小增量排序


可以说希尔排序是对插入排序的一种改进,即希尔排序是几个直接插入排序后的结果,基本思想就是将待排序的序列按照一定的规律分成几组,然后再对这几组进行直接插入排序,从而减少了之间插入排序的数据量,当经过几次的分组排序后,整个记录的排列都已经基本有序,这时再对整个序列进行直接插入排序


下面举例说明具体的排序过程

待排序序列:


51       33      62           96          87             17        28         51         52        10   


假设第一趟排序距离为5,分成5组:

51                                                       17

           33                                                   28

                      62                                                           51

                                      96                                                         52

                                                      87                                                     10

5组分别排序后:

17      28      51           52           10              51          33       62           96        87


第二趟排序以3为距离,分成3组:

17                                52                                            33                                       87

           28                                       10                                       62              

                       51                                              51                                    96

三组排序后


17      10        51            33           28             51         52        62         96         87


第三趟以1为距离:

分成一组,即第三组排序后的结果,然后对其整个序列直接插入排序


排序后结果为:


10 17 28 33 5151 52 62 87 96


希尔排序适用与待排序的记录数目较大的情况,是一种不稳定的排序算法,时间复杂度约为O(n1.3).