這里合并函數: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
添加回答
舉報
0/150
提交
取消