Реализация сортировки слиянием в python3 - PullRequest
1 голос
/ 08 марта 2020

Я прохожу онлайн-курс по Алгоритмам, и первым алгоритмом сортировки, который они проанализировали и попросили нас реализовать на любом языке по выбору, является сортировка слиянием. Я реализовал это в python:

def mergeSort(arr):

    while len(arr) > 1:
        mid = len(arr) // 2
        l = arr[:mid]
        r = arr[mid:]

        mergeSort(l)
        mergeSort(r)

        i = j = k = 0

        while i < len(l) and j < len(r):
            if l[i] < r[j]:
                arr[k] = l[i]
                i+=1
            else:
                arr[k] = r[j]
                j+=1
            k+=1

        while i < len(l):
            arr[k] = l[i]
            i+=1
            k+=1

        while j < len(r):
            arr[k] = r[j]
            j+=1
            k+=1

if __name__ == '__main__':

    arr = [1,6,2,5,3,4]
    mergeSort(arr)
    print(arr)

Когда я выполняю эту программу, абсолютно ничего не печатается. Почему?

1 Ответ

0 голосов
/ 08 марта 2020

mergesort имеет бесконечное значение l oop для нетривиальных массивов.

Вы должны изменить while len(arr) > 1: на if len(arr) > 1:

...