排序算法--快速排序算法解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法--快速排序算法解析相关的知识,希望对你有一定的参考价值。

一、快速排序算法思路

①、取待排序列表的第一个元素p,通过归位算法,挪移他到列表中正确的位置。

②、列表被元素p分成两部分,左边都比元素p小,右边都比元素p大。

③、通过递归,在两部分,重复1、2步骤,直至列表有序。

技术分享

归位算法动画演示:

技术分享

二、快速排序算法代码示例

 1 def partition(l,left,right):#归位算法
 2       temp = l[left] #保存归位元素
 3       while left <right:
 4             while l[right]>=temp and left<right:#当右边元素一直大于归位元素,右指针向右挪动。
 5                 right -=1
 6             l[left] =l[right]  #右边的元素小于归位元素,将其挪至左边指针指向的位置。
 7             while l[left]<temp and left<right:#当左边元素一直小于归位元素,左指针向左挪动。
 8                 left +=1
 9             l[right] = l[left] #左边的元素大于归位元素,将其挪至右边指针指向的位置。
10       l[right] = temp  #以上循环结束,左右指针会指向同一位置,即归位元素所处的正确位置。
11       return right
12 
13 def quick_sort(l,left,right):#快速排序算法
14     if left<right:
15         mid = partition(l,left,right)
16         quick_sort(l,left,mid-1)  #对归位元素左边部分进行递归。
17         quick_sort(l,mid+1,right) #对归位元素右边部分进行递归。

快速排序算法一般情况下要比冒泡算法快,但是在特殊情况下,会比冒泡算法慢,比如对一个已经排序好了的,自小到大的列表,进行从大到小的排序。

 

 

以上是关于排序算法--快速排序算法解析的主要内容,如果未能解决你的问题,请参考以下文章

十大经典排序算法动画与解析,看我就够了!(配代码完全版)

十大经典排序算法动画与解析,看我就够了!(配代码完全版)

❥十大排序算法❥爆肝两万字保姆级教程(文字解析+图解+代码实现+例题)

动画图解:十大经典排序算法动画与解析,看我就够了!(配代码完全版)

快速排序算法分析解析

算法排序之堆排序