欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-02 19:34:15
选择一句你喜欢的话来概括快速排序快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字少,则可分别对这两部分记录进行排序,以达到整个序列有序的目的快速排序的快速使用核心思路的快速使用待排序数组为{50,1...

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

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

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

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

快速排序的快速使用

核心思路的快速使用

待排序数组为{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);
        }
    }

本文地址:https://blog.csdn.net/BedivereAlter/article/details/109046057

相关标签: 数据结构与算法