c++怎么实现希尔排序

  介绍

这篇文章主要讲解了“c++怎么实现希尔排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c++怎么实现希尔排序”吧!

初始时,有一个大小为10的无序序列。
在第一趟排序中,我们不妨设gap1=N/2=5,即相隔距离为5的元素组成一组,可以分为5组。
接下来,按照直接插入排序的方法对每个组进行排序。
在第二趟排序中,我们把上次的差距缩小一半,即gap2=gap1/2=2(取整数)。这样每相隔距离为2的元素组成一组,可以分为2组。
按照直接插入排序的方法对每个组进行排序。
在第三趟排序中,再次把差距缩小一半,即gap3=gap2/2=1。这样相隔距离为1的元素组成一组,即只有一组。
按照直接插入排序的方法对每个组进行排序。此时,排序已经结束。
需要注意一下的是,图中有两个相等数值的元素5和5。我们可以清楚的看的到,在排序过程中,两个元素位置交换了。
所以,希尔排序是不稳定的算法。
 c + +怎么实现希尔排序

 package  com.lifeibigdata.fight;/* *
  ,* Created  by  lifei 提醒16/10/24。
  ,*/public  class  ShellSort  {
  
  ,,,static  int [], shellSort (int [], a) {
  ,,,,,,,int  gap =, a.length /, 2;
  ,,,,,,,while  (gap 祝辞=,1){
  ,,,,,,,,,,,//,把距离为,gap 的元素编为一个组,扫描所有组//,,,,,,,,,,,,for  (int 小姐:=,差距;,小姐:& lt;, a.length;,我+ +),{//,,,,,,,,,,,,,,,,int  j;//,,,,,,,,,,,,,,,,int  temp =,(我);
  
  ,,,,,,,,,,,,,,,,,//对距离为,gap 的元素组进行排序//,,,,,,,,,,,,,,,,,for  (j =,小姐:安康;差距;,j 祝辞=,0,,,,temp  & lt;, [j];, j =, j 作用;差距),{//TODO ,, j 作用;差距//,,,,,,,,,,,,,,,,,,,,,一个(时间+ j 差距),=,[j];//TODO 小姐:安康;gap  +,差距//,,,,,,,,,,,,,,,,,}//,,,,,,,,,,,,,,,,,一个(时间+ j 差距),=,临时;//TODO ,, j 作用;gap  +, gap =, j//,,,,,,,,,,,,,}
  
  ,,,,,,,,,,,for  (int 小姐:=,差距;,小姐:& lt;, a.length;,我+ +),{
  ,,,,,,,,,,,,,,,if (一个[我],& lt;,(小姐、安康、差距)){//,2,0,,3,,1,4,,2;
  ,,,,,,,,,,,,,,,,,,,int  tmp =,(我);
  ,,,,,,,,,,,,,,,,,,,一个[我],=,(小姐、安康、差距);
  ,,,,,,,,,,,,,,,,,,,一个(小姐、安康、差距),=,tmp;
  ,,,,,,,,,,,,,,,}
  ,,,,,,,,,,,}
  
  ,,,,,,,,,,,gap =, gap /2;
  ,,,,,,,}
  ,,,,,,,return ;
  ,,,}
  
  ,,,public  static  void  main (String [], args), {
  ,,,,,,,int [], a =, new  int [] {9,,,,, 1,,,,, 2,,,,, 5,,,,, 7,,,,, 4,,,,, 8,,,,, 6,,,,, 3,,,,, 5};
  ,,,,,,,int [], r =, shellSort(一个);
  ,,,,,,,for  (int  x: r), {
  ,,,,,,,,,,,System.out.println (x);
  ,,,,,,,}
  ,,,}
  
  }

直接插入排序和希尔排序的比较
直接插入排序是稳定的,而希尔排序是不稳定的。
直接插入排序更适合于原始记录基本有序的集合。
希尔排序的比较次数和移动次数都要比直接插入排序少,当N越大时,效果越明显。
在希尔排序中,增量序列差距的取法必须满足:最后一个步长必须是1。
直接插入排序也适用于链式存储结构;希尔排序不适用于链式结构。

感谢各位的阅读,以上就是“c++怎么实现希尔排序”的内容了,经过本文的学习后,相信大家对c++怎么实现希尔排序这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

c++怎么实现希尔排序