1.快速排序

public class QuickSort {
    public static int[] sort(int[] targe, int low, int high) {
        if (low >= high)
            return targe; // 递归出口
        int l = low;// 本次排序的起始点位置
        int h = high; // 本次排序的结束位置
        int key = targe[l];// 本次排序的基准 ,大于key的放key右边,小于key的方key左边
        while (l < h) {// 不是递归出口,而是本次循环结束的条件
            while (l < h && targe[h] > key) {
                h--; // 从后往前找小于key的数,while结束时h指向小于key的数的下标
            }
            if (l < h)
                targe[l++] = targe[h];// 把h指向的数放到l位置(l的值已经被提前保存在key中),
            while (l < h && targe[l] < key) {// 因为l需要前进一步,所以要加判断条件
                l++;// 从前往后找大于key的值while结束后l指向大于key的数

            }
            if (l < h)
                targe[h--] = targe[l];// 将l所指的数放入h为,(h的值已经被提前保存在l中)
                                        // 因为h需要后退一步,所以要加判断条件
        }
        targe[l] = key; // 最后把第一步保存的key放入l位置
        sort(targe, low, l - 1);// 对key左边部分排序
        sort(targe, l + 1, high);// 对key右边部分排序

        return targe;
    }

    public static void main(String[] args) {
        int[] a = { 6, 4, 9, 1, 4, 3, 2, 6, 7 };
        for (int i : QuickSort.sort(a, 0, a.length - 1)) {
            System.out.print("\t" + i);
        }
    }
}
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值