排序算法 - 交换排序 - 快速排序

实现方法


1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。

2.j–由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。

3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。

4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。

java代码


    public static void quickSort(int[] a , int left , int right) {
        //因为要递归所以需要判断下
        if(left<right)
        {  
                      //取 i,j 方便操作值 不会被覆盖, x 为第一个数
            int i = left ,  j = right , x = a[left];
            

            while(i<j) {
                //先找右边比x(也就是比a[left] 第一个值小的数)
                while(i<j && a[j]>x)
                {
                                    //如果满足a[j]小于或等于第一个数,获取到当前右边的索引(满足条件的下标)
                                         j--;
                }
                //因为上面j是变化的 所以需要接着判断
                if(i<j)
                {
                                       //把符合条件的放在a[i]的位置  i++是运行完这句话 i才变化  左边下标后移
                    a[i++]=a[j];
                }
                
                while(i<j&&a[i]<x)
                {
                                        //如果满足a[j]小于或等于第一个数,获取到当前左边的索引(满足条件的下标)
                    i++;
                }
                
                if(i<j)
                {
                                      //把左边的满足条件的赋值给右边 并且赋值后j--
                    a[j--]=a[i];
                }
                
            
                
            }
                    //最后把x放到 符合的位置
                    a[i]=x;
                
                        //第一步完成
                        //下面递归左右两次
            quickSort(a,left,i-1);
            quickSort(a, i+1, right);
        }
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nier6088

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值