python学习----快速排序的python语法实现

快速排序

快速排序(英语:Quicksort),⼜称划分交换排序(partition-exchangesort),通过⼀趟排序将要排序的数据分割成独⽴的两部分,其中⼀部分的所有数据都⽐另外⼀部分的所有数据都要⼩,然后再按此⽅法对这两部分数据分别进⾏快速排序,整个排序过程可以递归进⾏,以此达到整个数据变成有序序列。

快速排序算法的运作如下:
1)从数列中挑出⼀个元素,称为"基准"(pivot),
2)重新排序数列,所有元素⽐基准值⼩的摆放在基准前⾯,所有元素⽐基准值⼤的摆在基准的后⾯(相同的数可以到任⼀边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3)递归地(recursive)把⼩于基准值元素的⼦数列和⼤于基准值元素的⼦数列排序。

图示实现过程:
在这里插入图片描述

语法实现:

def quick_sort(alist,start,end):
    """快速排序"""
    if start >= end:
        return
    mid = alist[start]
    left = start
    right = end

    while left < right:
        while left <right and alist[right] >= mid:
            right -= 1
        alist[left] = alist[right]
        while left< right and alist[left] < mid:
            left += 1
        alist[right] = alist[left]
    # 从循环退出后,left与right相遇,即left=right
    alist[left] = mid

    quick_sort(alist,start,left-1)
    quick_sort(alist,left+1,end)

if __name__ == '__main__':
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    quick_sort(li,0,len(li)-1)
    print(li)

猜你喜欢

转载自blog.csdn.net/weixin_44850984/article/details/89107570