Python 3.x merge函数如何调用merge\u sort函数? def merge_排序(项目): if len(项目)
有谁能解释一下,在第一次返回有序子列表后,return merge(left_sorted,right_sorted)如何再次调用merge_sort() 因为调用merge_sort()的前一个实例仍在堆栈上。使用缩进显示调用嵌套,例如4个元素:Python 3.x merge函数如何调用merge\u sort函数? def merge_排序(项目): if len(项目),python-3.x,algorithm,sorting,mergesort,Python 3.x,Algorithm,Sorting,Mergesort,有谁能解释一下,在第一次返回有序子列表后,return merge(left_sorted,right_sorted)如何再次调用merge_sort() 因为调用merge_sort()的前一个实例仍在堆栈上。使用缩进显示调用嵌套,例如4个元素: def merge_sort(items): if len(items) <= 1: return items middle_index = len(items) // 2 left_split = items[:midd
def merge_sort(items):
if len(items) <= 1:
return items
middle_index = len(items) // 2
left_split = items[:middle_index]
right_split = items[middle_index:]
left_sorted = merge_sort(left_split)
right_sorted = merge_sort(right_split)
return merge(left_sorted, right_sorted)
def merge(left, right):
result = []
while (left and right):
if left[0] < right[0]:
result.append(left[0])
left.pop(0)
else:
result.append(right[0])
right.pop(0)
if left:
result += left
if right:
result += right
return result
unordered_list1 = [356, 746, 264, 569, 949, 895, 125, 455]
ordered_list1 = merge_sort(unordered_list1)
有谁能解释一下,在第一次返回有序子列表后,return merge(left_sorted,right_sorted)如何再次调用merge_sort()
因为调用merge_sort()的前一个实例仍在堆栈上。使用缩进显示调用嵌套,例如4个元素:
def merge_sort(items):
if len(items) <= 1:
return items
middle_index = len(items) // 2
left_split = items[:middle_index]
right_split = items[middle_index:]
left_sorted = merge_sort(left_split)
right_sorted = merge_sort(right_split)
return merge(left_sorted, right_sorted)
def merge(left, right):
result = []
while (left and right):
if left[0] < right[0]:
result.append(left[0])
left.pop(0)
else:
result.append(right[0])
right.pop(0)
if left:
result += left
if right:
result += right
return result
unordered_list1 = [356, 746, 264, 569, 949, 895, 125, 455]
ordered_list1 = merge_sort(unordered_list1)
任何人都可以解释如何返回merge(left\u sorted,right\u sorted)
在第一次返回有序子列表后再次调用merge\u sort()
merge
不调用merge\u sort()
,它将两个已排序的子列表合并到一个已排序的列表中
只有merge\u sort()
递归地调用自身,将其列表参数分成左右两部分,直到将其缩减为单个元素。每一组递归调用后面都有一个合并阶段,在该阶段中,已排序的子列表合并为返回给调用方的已排序子列表
任何人都可以解释如何返回merge(left\u sorted,right\u sorted)
在第一次返回有序子列表后再次调用merge\u sort()
merge
不调用merge\u sort()
,它将两个已排序的子列表合并到一个已排序的列表中
只有
merge\u sort()
递归地调用自身,将其列表参数分成左右两部分,直到将其缩减为单个元素。每一组递归调用之后都有一个合并阶段,在该阶段中,已排序的子列表被合并到一个已排序的子列表中,并返回给调用方……当它一直到最后一个元素,并且函数总是返回一个已排序的数组时,神奇的事情就会发生。当它一直到最后一个元素,并且函数总是返回一个排序数组时,这可能有助于神奇的发生。这可能会有帮助