我正在研究使用python进行合并排序,但我无法理解此代码示例。
'''
def merge(left, right):
merged = list()
left_point, right_point = 0, 0
# case1 - left/right 둘다 있을때
while len(left) > left_point and len(right) > right_point:
if left[left_point] > right[right_point]:
merged.append(right[right_point])
right_point += 1
else:
merged.append(left[left_point])
left_point += 1
# case2 - left 데이터가 없을 때
while len(left) > left_point:
merged.append(left[left_point])
left_point += 1
# case3 - right 데이터가 없을 때
while len(right) > right_point:
merged.append(right[right_point])
right_point += 1
return merged
def mergesplit(data):
if len(data) <= 1:
return data
medium = int(len(data) / 2)
left = mergesplit(data[:medium])
right = mergesplit(data[medium:])
return merge(left, right)
''' 假设我有一个数组[6,2,3,9,5,7]
然后将其拆分为一半大小,如果len(data)大于1,它将调用merge(left,right)。
但是问题是,如果您调用return merge(left,right),堆栈是否会被破坏? 那么当函数返回另一个函数时,如何在此处应用递归? 另外,merge(left,right)函数返回'merged',但是没有列表变量可以合并(例如receive_list = merge(left,right)) 那么我们如何接收合并?
我一直使用Java,所以不是第一次使用python
也许我缺少一些python原理?
提前致谢!