码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-01 00:03:13      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:nbsp   mil   div   lin   情况   while   gif   12px   pad   

一、快速排序算法思路

①、取待排序列表的第一个元素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) #对归位元素右边部分进行递归。

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

 

 

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

标签:nbsp   mil   div   lin   情况   while   gif   12px   pad   

原文地址:http://www.cnblogs.com/cjlyd233/p/7461085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!