Не работает рекурсивная сортировка вставок в python - PullRequest
0 голосов
/ 04 апреля 2020
    import sys

Сначала создали функцию и передали arr и n в качестве аргументов.

    def recursiveinsertionsort(arr,n):

Базовый случай: когда n = 0 или n = 1.

        if n<=1:
        return

, теперь вызов последовательность до оставшихся n-1 членов.

    recursiveinsertionsort(arr,n-1)
    temp=arr[n-1]
    j=n-2
    while j>=0 and arr[j+1] < arr[j]:
        arr[j+1]=arr[j]
        j-=1
    arr[j+1]=temp


    def printArray(arr,n):
        for i in range(n):
            print(arr[i])


    arr=[15,12,26,98,45,3]
    n=len(arr)
    recursiveinsertionsort(arr,n)
    printArray(arr,n)

Вывод не отсортирован.

1 Ответ

0 голосов
/ 06 апреля 2020

В вашем состоянии while l oop измените arr[j+1] < arr[j] на arr[j] > temp.

Как упоминалось в комментариях, алгоритм сортировки вставкой работает, находя позицию, куда temp следует переместить в в массиве. Проверьте этот пост для получения дополнительной информации о рекурсивной вставке сортировки.

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