java_HeerSort希尔排序

1.通过衰减成不同的增量进行部分排序移动,6,3,2,1

        int [] a={9, 3, 2, 4, 10, 44, 83, 28, 22, 76, 1,  5,  0,  -1,36, 35, 23};
                //A0,A1,A2,A3,A4, A5, A6, A7, A8, A9, A10,A11,A12,A13
        int d =a.length;
        while(true){
            d=d/2; //默认增量是数组长度一半 this is 6
            for (int i = 0; i < d; i++) {
                //循环时控制 数字下标 j加上增量 小于等于即最后一个数的下标  小于数组的长度   步长是d
                for (int j = 1; j +d<a.length;j+=d) {
                    
                    int tmp;//若下标小的数的值     大于  下标大的数的值    两个数交换swap
                    if (a[j]>a[j+d]) {
                        tmp=a[j];
                        a[j]=a[j+d];
                        a[j+d]=tmp;
                    }
                }
            }
            //增量即步长 d若减到1时就结束while循环
            if (d==1) {
                break;
            }
            d--;
        }
        System.out.println(Arrays.toString(a));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值