簡體   English   中英

python3中歸並排序的實現

[英]Implementation of merge sort in python3

我正在在線學習算法課程,他們分析並要求我們以任何選擇的語言實現的第一個排序算法是歸並排序。 我在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)

當我執行這個程序時,絕對沒有打印出任何內容。 為什么?

mergesort對非平凡數組有一個無限循環。

您必須將while len(arr) > 1:更改為if len(arr) > 1:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM