您的位置:首页 > 其它

8 -- 插入排序之希尔排序

2015-05-29 11:37 246 查看
八、希尔排序

          希尔排序,是递减增量排序算法,是插入排序的一种高速而稳定的改进版本。基于以下两点性质改进:

          1)插入排序对几乎排好序的数据操作,效率高。即可达到线性排序的效率。

          2)插入排序一般来说是低效的,因为每次只能将数据移动一位。

          希尔算法把比较的元素分为几个区域来提升性能。让一个元素可以一次性的朝最终位置前进一大步,然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,待是到了这步,需排序的数据几乎是已经拍好的了。

          假设有这样一组数据[13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10],开始以步长为5开始排序,分成5列,

13  14  94  33  82 

25  59  94  65  23

45  27  73  25  39

10

然后对每列进行排序:

10  14  73  25  23

13  27  94  33  39 

25  59  94  65  82

45

然后我们得到[10,14,73,25,23,13,27,94,33,39,25,59,94,65,82,45],然后再以3为步长进行排序:

10  14  73 

25  23  13 

27  94  33

39  25  59 

94  65  82

45

排序之后变成:

10  14  13 

25  23  33

27  25  59

39  65  73

45  94  82 

94

最后以1位步长今昔给你排序,此时就是简单的插入排序了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: