快速排序

Posted chenzhiming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。

  快速排序是一种排序方式,通过先找到一个中间点(一般我们拿列表的第一个值作为中间点),根据这个中间点按顺序与其他数值进行比较,最后将这个列表切分为3部分,比他大的值列表、比他小的值列表和中间值所在的位置。

技术图片

 

  如图,我们把55这个值拿出之后,现在这个位置是个空。我们从右侧开始比较,13 比55小,所以将13放到第一个位置。现在,最后一项是个空,所以右侧比较停止,从左侧开始比较。若是遇到比中间值大的就放到右侧,因为只放过去了,所以为空,又需要从右侧比较,如此。。。

  代码实现

def quiteSort(alist,start,end):
    low = start
    height = end
    
    if low >= height:
        return
    mid = alist[low]
    while low < height:
        #从右往左进行判断
        while low < height:
            if alist[height] >= mid:
                height -= 1
            else:
                alist[low] = alist[height]
                break
        while low < height:
            if alist[low] < mid:
                low += 1
            else:
                alist[height] = alist[low]
                break
    alist[low] = mid
    quiteSort(alist,start,low-1)
    quiteSort(alist,low+1,end)
    
l = [55,40,60,38,80,99,5,13]
quiteSort(l,0,len(l)-1)
print(l)

 

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

深度解析(十六)快速排序

快速排序

基于快速排序方法改成求第k大的数

简单介绍一下快速排序的思想?

用C语言编程实现快速排序算法

Python实现排序算法之快速排序