数据结构:快速排序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)

  结果:

猜你喜欢

转载自www.cnblogs.com/cong3Z/p/12906620.html
今日推荐