用java实现Shell Sort

 

package sort;

 

public class ShellSort{

 

     private int[] gap;

 

     public void initGap(){

         gap = new int[3];

         gap[0] = 3;

         gap[1] = 2;

         gap[2] = 1;

     }

 

     public void sort(int[] data) {

         initGap(); // 初始化增量数组

      

         for (int s = 0; s<gap.length; s++) {

             int d = gap[s]; // 得到每次增量大小

      

             // 在当前增量d下对每个“隐形子序列”进行插入排序

             for (int i=d; i<data.length; i++) {

      

                 if (data[i] < data[i-d]) { // 需要调整

                     int tmp = data[i];

      

                     int j;

                     for (j = i-d; j>=0 && tmp<data[j]; j-=d) // 插入排序实现

                         data[j+d] = data[j];

                     data[j+d] = tmp;

                 }

             }

          }

     }

 

 

     /**

      * 测试

      * @param args

      */

     public static void main(String args[]) {

         ShellSort test = new ShellSort();

         int[] data = {70,23,40,10,80,20,90,100,75,60,45};

         test.sort(data);

      

         for (int i=0; i<data.length; i++)

             System.out.print(data[i]+", ");

      

     }

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值