排序——3.希尔排序

希尔排序是在直接插入排序上改进而来。

1.以一个增量temp将要排序的数组进行分组,所以距离为temp的倍数的元素在同一个组;

2.对每一个组进行快速插入排序;

3.改变增量,从复以上操作;

4.直至增量等于1,结束。

实现代码如下:

//希尔排序 public class Demo32 { public static void main(String args[]){ int r[]={2,4,8,1,5,6,3,9,10,5,0,4,7}; fun(r); for(int i=0;i<r.length;i++){ System.out.print(r[i]+","); } int i=1; } public static void fun(int intArray[]){ int temp = intArray.length/2 ; //声明增量,以此为间隔将元素分组 int var; while(temp>0){ for(int i=temp;i<intArray.length;i++){ //对所有相隔为temp的元素进行直接插入排序 var = intArray[i]; int j=i-temp; while(j>=0&&intArray[j]>var){ intArray[j+temp]=intArray[j]; j=j-temp; } intArray[j+temp]=var; } temp=temp/2; //改变增量 } } }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值