快速排序是一种排序方式,通过先找到一个中间点(一般我们拿列表的第一个值作为中间点),根据这个中间点按顺序与其他数值进行比较,最后将这个列表切分为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)