快速排序

public  void quickSort(List<Integer> select, int begin, int end) throws Exception {
        //迭代终止条件
        if (end <= begin) {
            return;
        }
        int flag = select.get(begin);//标尺值
        int left = begin;//左指针
        int right = end;//右指针
        while (left < right) {
            //第一步找到右指针小于左指针的数,如果没有,左右指针重合,循环结束
            if (select.get(left) < select.get(right)) {
                right--;
                continue;
            }
            if(left==right){
                break;
            }
            //第二步,找到右指针小于左指针的数,交换左右指针的值,左指针所代表的值已比对过,下次不在比对,左指针+1
            //右指针所代表的值是标尺值
            int temp=select.get(left);
            select.set(left,select.get(right));
            select.set(right,temp);
            left++;
            //第三步找到左指针比右指针大的数,如果没有,左右指针重合,循环结束
            while(left<right&&select.get(left)<select.get(right)){
                left++;
                continue;
            }
            if(left==right){
                break;
            }
            //第四步,找到左指针大于右指针的数,交换左右指针代表的数,右指针-1,左指针代表标尺值
            int temp2=select.get(left);
            select.set(left,select.get(right));
            select.set(right,temp2);
            right--;
        }
        //左右指针重合,以该重合位置为边界,左边指针代表数字集合小于右边指针代表数字集合,分别迭代左右指针集合,当子集合长度为0时,终止迭代
        quickSort(select,begin,left-1);
        quickSort(select,left+1,end);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值