gpt4 book ai didi

python - 使用 Python 表示合并排序,如何避免 IndexError

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:05 25 4
gpt4 key购买 nike

我知道这不对,我找到了another method没有无限数,但我仍然想知道是否可以使用无限数来纠正它。

def MergeSort(A):
if len(A) > 1:
mid = len(A) / 2
left = A[0:mid]
right = A[mid:]

MergeSort(left)
MergeSort(right)

w = float("inf")
left.append(w)
right.append(w)
i,j = 0,0
for k in range(len(A)):
if left[i] <= right[j]:
A[k] = left[i]
i += 1
else:
A[k] = right[j]
j += 1

最佳答案

问题出在 for k in range(len(A)): 循环中;当您用尽 left 中的所有值但 right 中仍有值时会发生什么(反之亦然)?

链接方法添加了一个基本上看起来像的测试

if (left still has values) and ((right has no values) or (next_left < next_right)):
take a value from left

您上面的代码反而添加了一个守卫值,确保如果您位于左侧守卫值,则它保证大于任何非守卫右侧值(反之亦然)。在 for 循环停止之前,情况一直如此,左右各只包含保护值。

另一个选项,as seen here , 就是一直循环,直到左边或右边都用完,然后有后续循环收集剩余的值。

关于python - 使用 Python 表示合并排序,如何避免 IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35262723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com