美文网首页
快速排序算法图文详解(模版使用)

快速排序算法图文详解(模版使用)

作者: CryFace | 来源:发表于2020-08-03 18:12 被阅读0次

算法介绍
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

算法描述
快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:
步骤1:从数列中挑出一个元素,称为 “基准”(pivot );
步骤2:重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
步骤3:递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

算法实现

    public void quickSort(int[] num, int left, int right) {
        //如果left等于right,即数组只有一个元素,直接返回
        if(left>=right) {
            return;
        }
        //设置最左边的元素为基准值
        int key=num[left];
        //数组中比key小的放在左边,比key大的放在右边,key值下标为i
        int i=left;
        int j=right;
        while(i<j){
            //j向左移,直到遇到比key小的值
            while(num[j]>=key && i<j){
                j--;
            }
            //i向右移,直到遇到比key大的值
            while(num[i]<=key && i<j){
                i++;
            }
            //i和j指向的元素交换
            if(i<j){
                int temp=num[i];
                num[i]=num[j];
                num[j]=temp;
            }
        }
        num[left]=num[i];
        num[i]=key;
        quickSort(num,left,i-1);
        quickSort(num,i+1,right);
    }

算法分析
时间复杂度度O(nlogn),空间复杂度(logn)。
不稳定排序(例a与b值相同,但是在比较后有可能会发生位置变化)
内排序(所有排序操作都在内存中完成)

相关文章

  • 快速排序算法图文详解(模版使用)

    算法介绍快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独...

  • 手撕代码 之 快速排序

    1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...

  • 快速排序

    Java快速排序图文详解 正文来自:https://www.cnblogs.com/ahalei/p/356843...

  • 常见排序算法

    这里介绍四种排序算法,选择排序、快速排序、归并排序、计数排序 选择排序(使用递归) 选择排序(使用循环) 快速排序...

  • 【算法图文动画详解系列】QuickSort 快速排序算法

    快排简介 快速排序(Quicksort)是对冒泡排序算法的一种改进。 快速排序由C. A. R. Hoare在19...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 06-快速排序(完成)

    快速排序(高效排序算法) —— 不稳点!!! 动态图: 一、概念: 原理:  快速排序使用分治法(Divide a...

  • 快速排序优化详解

    原文地址:快速排序优化详解 正如它的名字所体现,快速排序是在实践中最快的已知排序算法,平均运行时间为O(NlogN...

  • Java 9种排序算法详解和示例汇总

    冒泡排序、选择排序、直接插入排序、二分法排序、希尔排序、快速排序、堆排序、归并排序、基数排序,共9中排序算法详解和...

  • 算法之快速排序、分而治之

    分而治之 快速排序——一种常用的优雅的排序算法。快速排序使用分而治之的策略。 分而治之 (divide and c...

网友评论

      本文标题:快速排序算法图文详解(模版使用)

      本文链接:https://www.haomeiwen.com/subject/jsryrktx.html