课时456快速排序
假设现在仍然有一个无序的序列,直接去找其中【54】的位置。
此时,就需要两个游标。
【54】左边的都比【54】小,【54】右边的都比【54】大。
因此此时代表【小】的游标和代表【大】的游标,在交汇时,就是【54】的位置。
通过比较他们在相遇之前遇到的元素大小,来进行排序。
简单来说,采用两个不同方向的游标朝着中间走。
而要他们在中间相遇,就需要一个中间值。
假设中间值是54。然后现在high的右边往中间走时,遇到【20】这个元素。
【20】比中间值小,于是放在low游标的左边。
接着high的游标走了之后,让low的游标开始走。
那么low遇到比【54】大的元素就让该元素移动到high处,如果不比【54】大则保持不动。
然后又让high的游标往左走。
重复这个步骤,直到找到【54】为止。
课时47
def quick_sort(alist):
"""快速排序"""
mid_value=alist[0]
low=0
n=len(alist)
high=n-1
while low<high:
if alist[high]>mid_value:
high-=1