首页 > 编程语言 > 详细

经典排序——希尔排序

时间:2016-10-19 13:24:18      阅读:222      评论:0      收藏:0      [点我收藏+]

  感谢太原理工大学的算法演示:http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/shell_sort.asp

 

在希尔排序中主要是要明白在最底层是通过一次又一次的插入排序来实现的。每次都看成是h(k)个独立的数组,进行插入排序,然后循环h(k-1),h(k-2).....h(1);

代码如下:如果gap=1;那就是最后的插入排序了,不明白插入排序可以看我的插入排序

  

 1 public static void Shell(int [] test){
 2     int len = test.length;
 3     int temp,j;
 4     for(int gap=len/2;gap>0;gap=gap/2){
 5         for(int i=gap;i<len;i++){
 6             if(test[i-gap]>test[i]){//关键在于这里的控制test[i]
 7             temp = test[i];
 8         for(j=i;j>=gap&&temp<test[j-gap];j=j-gap){
 9               test[j]=test[j-gap];
10         }
11         test[j]=temp;
12             }
13     }
14             }
15 }

 

经典排序——希尔排序

原文:http://www.cnblogs.com/chenshun-2016/p/5976559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!