数据结构:快速排序python
快速排序思路:将元素一个个找到他们在队列中的位置
我们可以用一个中间变量a保存第一个元素,一开始,从最后一个元素与中国元素进行比较,如果大于a的值,我们将high向左移动一下,如果小于a,我们将a[low]=a[high],a再与比较右边的元素比较,如果小于,我们将low向右移动一格,如果大于a,说明该元素应该在元素的右边,我们将赋值a[high]=a[low]
当low<high的情况下,上述过程不断循环,找到第一个元素在队列中的位置
这时候以这个元素为中心,左边的元素全部小于它,左边元素全部大于它,分别对两边的队列进行上述同样的操作,我们可以使用递归的思想
但是这时候左边最后一个元素位置为low-1,而右边的起始值为low+1
所有函数将引入两个位置信息的变量
start,表示每次想要去排序的那个值
last,表示该部分的最后一个元素的位置
上面分为左右两部分
左边开始元素位置为start,最后一个元素位置为:low-1
右边的start=low+1,最后一个元素位置为:last
注意,这个递归的过程应该也属于函数的一部分,这还是在排序
整体代码如下:
def quick_sort(alist,start,last):
a=alist[start]#一开始要排序的基准值
high=last
low=start
if start>=last:
return
while low<high:
while low<high and alist[high]>=a:
high=high-1
alist[low]=alist[high]
while low<high and alist[low]<a:
low=low+1
alist[high]=alist[low]
alist[low]=a
quick_sort(alist,start,low-1)
quick_sort(alist,low+1,last)
b=[55,66,22,33,99,105,630,55,99,66,5550,55]
print(b)
quick_sort(b,0,len(b)-1)
print(b)
结果:

浙公网安备 33010602011771号