【发布时间】:2020-10-17 08:53:46
【问题描述】:
我正在尝试学习如何进行合并排序。但是,当我运行此代码时,输出是错误的。作为参考,我正在从 tutorialspoint 学习。
代码是
import random
Listy = []
for x in range(0, 15):
Listy.append(random.randint(1, 15))
Second = []
for x in range(0, 20):
Second.append(None)
#I needed to initialize an empty array
def merge(low, mid, high):
l1 = low
l2 = mid + 1
i = low
while l1 <= mid and l2 <= high:
print("First ", l1)
print("Second", l2)
print(i, " is i")
if Listy[l1] < Listy [l2]:
print("True")
Second[i] = Listy[l1]
l1 = l1 + 1
else:
print("False")
Second[i] = Listy[l1]
l2 = l2 + 1
i = i + 1
while l1 <= mid:
Second[i] = Listy[l1]
i = i+1
l1 = l1 + 1
while l2 <= high:
Second[i] = Listy[l2]
i = i+1
l2 = l2 + 1
for x in range(low, high):
Listy[x] = Second[low]
low = low + 1
print(Listy)
def sort(low, high):
print("Recursion: ", low, " - ", high)
if low < high:
mid = int((low+high) / 2)
sort(low, mid)
sort(mid + 1, high)
merge(int(low), int(mid), int(high))
else:
return
for x in Listy:
print(x)
sort(0, 15)
print(Listy)
我不知道为什么,但输出一遍又一遍地重复数字。这是通过代码 [11, 11, 7, 13, 13, 13, 13, 11, 14, 15, 15, 15, 15, 15, 2, 11] 测试打印的数组。为什么会这样?
【问题讨论】: