在这里的快速排序算法代码中,我一直试图找出为什么NumPy数组总是工作,而python列表有时会失败?

2024-04-16 19:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个快速排序算法。它可以将任何NumPy数组作为任何大小的输入。你知道吗

def quick_sort(A):
    # partitioning array
    n = len(A)  # size/length of array i.e. input 
    p = 0       # pointer on pivot - suppose 1st element is our pivot
    i = p + 1   # pointer on partition border i.e. next possible swap

    for j in range(1,n):   
        if A[p] > A[j]:
            A[i], A[j] = A[j], A[i]
            i += 1

    A[p], A[i-1] = A[i-1], A[p]

    # recursive call on left side of pivot (smaller than pivot)
    if len(A[0:(i-1)]) > 1:
        quick_sort(A[0:(i-1)])

    # recursive call on right side of pivot (greater than pivot)    
    if len(A[(i-1):]) > 1:
        quick_sort(A[i:])

    return A

但当输入是Python列表时,它有时会失败。你知道吗

对于任何大小的NumPy输入,请尝试以下操作:

A = np.random.randint(20, size=10)

它非常适合NumPy数组!但当输入是这样的Python列表时,它并不总是起作用:

[40, 6, 0, 99, 33]

非常感谢您的提示或回答。你知道吗


Tags: ofnumpysizelenifon数组quick