这是python中的合并排序逻辑:(这是第一部分,忽略函数merge())问题的关键是将递归逻辑转换为while循环。代码礼貌:Rosettacode 合并排序
def merge_sort(m):
if len(m) <= 1:
return m
middle = len(m) / 2
left = m[:middle]
right = m[middle:]
left = merge_sort(left)
right = merge_sort(right)
return list(merge(left, right))
是否有可能在 while 循环中使其成为一种动态的方式,而每个左右数组分成两个,一种指针根据左右数组的数量不断增加并将它们分解,直到只剩下单个长度大小的列表?因为每次在左侧和右侧进行下一次拆分时,数组都会不断分解,直到只剩下一个长度列表,所以左侧(left-left,left-right)和右侧(right- left,right-right) 中断会增加,直到它达到所有大小为 1 的列表。