说人话的五分钟快速简单使用排序-快速排序 Java语言

选择一句你喜欢的话来概括快速排序

快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字少,则可分别对这两部分记录进行排序,以达到整个序列有序的目的

说人话:找一个点, 比它小的放左边, 大的放右边, 用递归多来几次就完事了.

快速排序的快速使用

核心思路的快速使用

待排序数组为{50,10,90,30,70,40,80,60,20,0}
第一轮以20为基准
分为了{0,10} {20} {50,90,30,70,40,80,60}
{0,10}以10为基准分为了{0}{10}

{50,90,30,70,40,80,60}以60为基准分为了
{50,30,40} {60} {90,70,80}
{30} {40} {50} {60} {70} {80} {90}

    public static void quick_sort(int[] a, int left, int right){
        int pivot = a[(left + right) / 2];
        //pivot作为中轴 比它小的放在左边 比它大的放在右边
        int l = left;
        int r = right;
        while (l <= r){
            //开始比较! 只要左指针的位置不超过右指针的位置就不能停下来
            while (pivot > a[l]){
                //在左侧找到一个比中轴值大的为止
                l = l + 1;
            }
            while (pivot < a[r]){
                //在右侧找到一个比中轴值小的为止
                r = r - 1;
            }
            if(l <= r){
                //交换他们俩!
                int temp = a[l];
                a[l] = a[r];
                a[r] = temp;
                l++;
                r--;
                //至于为什么要l++和r--,你想想如果不加的话是不是就陷入死循环了
            }
            //这样就进行完一个轮回啦, 马上就要开始下一个轮回了冲冲冲
        }
        if(left < r){
            quick_sort(a, left, r);
        }
        if(l < right){
            quick_sort(a, r, right);
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值