首页 > 解决方案 > 在这个快速排序算法代码中,我一直试图找出为什么 NumPy 数组总是有效而 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]

非常感谢您的提示或答案。

标签: pythonlistnumpyquicksortnumpy-ndarray

解决方案


推荐阅读