插入排序之希尔排序

            
package  sort.algorithm;
public  class  ShellSort {
     public  static  void  main(String[] args) {
         int  a[] = {  1 54 6 3 78 34 12 45 56 100  };
         double  d1 = a.length;
         int  temp =  0 ;
         while  ( true )
         {
             //利用这个在将组内倍数减小
             //这里依次为5,3,2,1
             d1 = Math.ceil(d1 /  2 );
             //d为增量每个分组之间索引的增量
             int  d = ( int ) d1;
             //每个分组内部排序
             for  ( int  x =  0 ; x < d; x++)
             {
                 //组内利用直接插入排序
                 for  ( int  i = x + d; i < a.length; i += d) {
                     int  j = i - d;
                     temp = a[i];
                     for  (; j >=  0  && temp < a[j]; j -= d) {
                         a[j + d] = a[j];
                     }
                     a[j + d] = temp;
                 }
             }
                                                                                                                                     
             if  (d ==  1 )
                 break ;
         }
         for  ( int  i =  0 ; i < a.length; i++)
             System.out.print(a[i]+ "  " );
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值