标签: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