算法-希尔排序

图示

在这里插入图片描述

代码

public static void xrpx(ArrayList<Integer> data){
    if(data.size()<=1)
        return;
    int divisor = data.size();
    int length = data.size();
    int index; //记录当前要操作的数据下标
    int temp; //存放要操作的数据的值
    int record; //索引
    while (divisor>1){
        divisor /= 2;
        //从第divisor个元素开始,逐个排序,排序时只在组里排
        for (index = divisor; index < length; index++) {
            record = index;
            temp = data.get(index);
            //从当前index开始,步长为divisor,验证有下一个且下一个较大,则后移
            while (record - divisor >= 0 && temp < data.get(record-divisor)){
                data.set(record,data.get(record-divisor));
                record -= divisor;
            }
            //退出while时找到位置
            data.set(record,temp);
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值