В этом коде алгоритма быстрой сортировки я пытался выяснить, почему массивы NumPy всегда работают и когда-нибудь происходит сбой списков python? - PullRequest
0 голосов
/ 26 августа 2018

Это алгоритм быстрой сортировки. Он работает без проблем с любым массивом 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]

Ваши подсказки или ответы очень ценятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...