快速排序法 python实现

首轮排序,flag是标准,小 就是比标准小,大就是比标准大,l[i],l[j]

小,小,小,l[i](小),大,大,大,l[j],...

l[i]=l[i+1]变大,然后和l[j]交换

l=[1,3,2,7,5,6,3,9,4,6]
def fist_sort(l):
    flag=l[-1]
    i=-1
    for j in range(len(l)-1):
        if l[j]>flag:  #j比i早,按照步长1在递增,如果跳过比标记位大的就保留在l[i]右边
            pass
        else:
            i+=1    #如果判断遇到比标记位小,此时调换前i已经+1,l[i]是属于右边的大数的,调换l[i]和l[j],大小数交换
            temp=l[i]
            l[i]=l[j]
            l[j]=temp
    print(l)  #第一轮排序已经结束
    temp=l[-1]   #i+1就是中间位
    l[-1]=l[i+1]
    l[i+1]=temp
    return i+1
fist_sort(l)

首轮解决后就可以开始递归


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页