使用Tukey的Ninther枢轴对现代分区(Lomuto分区)进行快速排序

def med3(A:list,lo:int,hi:int): 
    return st.median([A[0],A[len(A)//2],A[len(A)-1]])
def ninther_index(A:list(),hi:int)->int: 
    A_cutted = A[lo : hi+1]
    return A.index(med3([med3(A_cutted[ 0 : len(A_cutted)//3 ]),med3(A_cutted[ len(A_cutted)//3 : 2*len(A_cutted)//3 ]),med3(A_cutted[ 2*len(A_cutted)//3 : len(A_cutted) ])]))

def quicksort(A:list(),hi:int):
    if lo < hi:
        p = partition(A,lo,hi)
        quicksort(A,p - 1)
        quicksort(A,p + 1,hi)

def partition(A:list(),hi:int) -> int:
    ni = ninther_index(A,hi)
    A[hi],A[ni] = A[ni],A[hi]
    print(A,hi)
    pivot = A[hi]
    i = lo
    for j in range(lo,hi+1):
        if A[j] < pivot:
            A[i],A[j] = A[j],A[i]
            i += 1
    A[i],A[hi] = A[hi],A[i]
    return i

我需要使用带有Tukey的ninther枢轴的Lomuto分区进行快速排序,但这不起作用。我该怎么办才能解决问题?

yu_yi2009 回答:使用Tukey的Ninther枢轴对现代分区(Lomuto分区)进行快速排序

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3035317.html

大家都在问