【发布时间】:2021-05-02 05:24:22
【问题描述】:
合并排序实现难以给出正确的输出:
def merge_sort(a):
# array of 1 item or less returns the same array
if len(a) <= 1:
return a
# index for middle of array
m = math.floor(len(a) / 2)
# Recursive method for dividing and sorting original array into smaller
# arrays
a0 = merge_sort(a[0:m])
a1 = merge_sort(a[m:])
merge(a0, a1, a)
return a
def merge(a0, a1, a):
# Indices for arrays a1 and a0
i0 = 0
i1 = 0
for i in range(len(a)):
# Array no longer contains elements not already sorted into Array a
if i0 == len(a0):
a[i] = a1[i1]
i1 += 1
# Array no longer contains elements not already sorted into Array a
elif i1 == len(a1):
a[i] = a0[i0]
i0 += 1
# Comparing Arrays a1 and a0, then adding smaller element to
# original Array a
elif a[i0] < a[i1]:
a[i] = a0[i0]
i0 += 1
else:
a[i] = a1[i1]
i1 += 1
逻辑是正确的,但我的索引或引用可能有问题,我只是没有抓住。 我的代码可能有什么问题,我该如何解决?
【问题讨论】:
-
您的代码是如何工作的?可以在代码中添加 cmets 吗?