【发布时间】:2025-02-21 01:20:02
【问题描述】:
我正在尝试编写递归合并排序算法,但是我的合并算法不是递归的。
有人告诉我在下面的函数中使用以下参数。
def merge(left_buffer, right_buffer, data):
"Merges two sets of data together by comparison"
print("MERGING",left_buffer,"and",right_buffer)
#Dual iteration
m = 1
n = 1
k = 0
j = 0
for i in range(len(data)):
if len(left_buffer) == 0:
data[i] = right_buffer[k]
k+=1
elif len(right_buffer) == 0:
data[i] = left_buffer[j]
j += 1
elif left_buffer[0] < right_buffer[0]:
data[i] = left_buffer[0]
left_buffer = left_buffer[1:]
else:
data[i] = right_buffer[0]
right_buffer = right_buffer[1:]
print('Result of the merge:',data)
这是我将两个数据集合并为另一个数据集的功能。
然后是我的递归归并排序算法:
def merge_sort(data):
"Merge sort recursion"
if len(data) == 1:
return [data[0]]
else:
half_length = len(data)//2
left_half = data[0:half_length]
right_half = data[half_length:]
#Only sorting the left side
left = merge_sort(left_half)
right = merge_sort(right_half)
return merge(left,right,data)
我收到的主要问题是,在最终合并两个列表时,我发现我正在合并 None 类型。
我不知道如何解决这个问题。
也许我的合并算法不正确,但是我的导师说没问题。
【问题讨论】:
标签: python recursion mergesort