为了好玩,我正在尝试实现 k 方式合并排序,其中 k = 3。递归调用合并排序没有问题,但我试图将三个列表合并在一起,但没有得到排序列表。基本思想是我比较每个列表的第一个元素,如果它是最小的,我将它附加到一个列表中。我对所有数组重复该过程。
def three_merge(a,b,c):
i =0
j =0
k=0
list = []
while(i < len(a) or j < len(b) or k < len(c)):
while(a[i] <= b[j] and a[i] <= c[k]):
list.append(a[i])
i=i+1
print i
while(b[j] <= a[i] and b[j] <= c[k]):
list.append(b[j])
j=j+1
print j
while(c[k] <= a[i] and c[k] <= b[j]):
list.append(c[k])
k=k+1
print k
return list
a = [1,2]
b = [-5,10]
c = [-11, 100]
print three_merge(a,b,c)