亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我嘗試使用python實現合并排序算法,但代碼不能很好地工作

我嘗試使用python實現合并排序算法,但代碼不能很好地工作

臨摹微笑 2022-08-11 18:02:43
這里合并函數:def __merge__(arr, middle):    L = arr[:middle]    R = arr[middle:]    L.append(math.inf)    R.append(math.inf)    i = 0    j = 0    for k in range(0, len(arr)):        if(L[i] <= R[j]):            arr[k] = L[i]            i += 1        else:            arr[k] = R[j]            j += 1    return arr這里合并排序函數,以遞歸方式調用 intself:def __mergeSort__(listOfNumber):if(len(listOfNumber) <= 1):    return listOfNumbermiddle = int( len(listOfNumber) / 2 )print('merge lit: ', listOfNumber[:middle])__mergeSort__(listOfNumber[:middle])print('merge lit: ', listOfNumber[middle:])__mergeSort__(listOfNumber[middle:])print(__merge__(listOfNumber, middle))return __merge__(listOfNumber, middle)當我給出像[6,5,4,3,2,1]這樣的數組作為輸入時,我得到這個:[3,2,1,6,5,4]
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您需要捕獲在兩半上運行的結果:merge_sort


    def merge_sort(lst):


        if len(lst) <= 1:

            return lst


        middle = len(lst) // 2 

        left = merge_sort(lst[:middle])

        right = merge_sort(lst[middle:])

        return merge(left, right)

您需要修改該函數,使其接受兩個列表作為參數。merge


查看完整回答
反對 回復 2022-08-11
  • 1 回答
  • 0 關注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號