快递排序-JAVA实现

本文介绍了如何使用JAVA实现快递排序算法,通过示例展示了排序过程,从初始序列[26, 4, 23, 20, 45]逐步变为有序序列[4, 20, 23, 26, 45]。" 108801033,5094673,双重检查锁定的隐患与修复策略,"['并发控制', 'Java编程', '多线程', '内存模型', '编程实践']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public static void sort(int[] arrs, int start, int end){
    int i = start;              //数组开始
    int j = end;                //数组结束
    int k = start;              //基值下标位置,一般取第一个值好了,运气值
    int mid = arrs[k];          //基值,小的左边,大的右边
    boolean flag = true;        //从小到大比较还是从大到小比较的标识,为true时从大到小比较,找到比基值小的
    while(i != j){
        if(flag){
            if(arrs[j] < mid){
                arrs[k] = arrs[j];
                arrs[j] = mid;
                k = j;
                flag = false;   //找到比基值小的,则将基值与当前值换位,接下去换方向找比基值大的
                System.out.println("mid["+mid+"]-start["+start+"]-end["+end+"]  "+Arrays.toString(arrs));
                continue;
            }
            j--;                //直接找到一个比基值小的
        } else {
            if(arrs[i] > mid){
                arrs[k] = arrs[i];
                arrs[i] = mid;
                k = i;
                flag = true;    //找到比基值大的,则将基值与当前值换位,接下去换方向找比基值小的
                System.out.println("mid["+mid+"]-start["+start+"]-end["+end+"]  "+Arrays.toString(arrs));
                continue;
            }
            i++;                //直接找到一个比基值大的
        }
    }
    if(k-1>start){
        sort(arrs, start, k -1);//将基值左边的递归,直到基值左边没有只有一个元素或没有元素
    }
    if(k+1 < end){
        sort(arrs, k + 1, end); //将基值右边的递归,直到基值右边没有只有一个元素或没有元素
    }
}

快递排序示例:

[26, 4, 23, 20, 45]
[20, 4, 23, 26, 45]
[4, 20, 23, 26, 45]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值