【发布时间】:2013-02-08 08:39:06
【问题描述】:
为了好玩,我正在尝试实现 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)
【问题讨论】:
-
你知道,这可能有一个/两个班轮。
sort(a + b + c)浮现在脑海中。 -
return list应该在你的 while 循环中还是在它之后? -
我正在尝试不使用内置函数
-
为什么?这是作业还是什么,或者你只是想让这变得困难?合并一个像 python 喜欢的数组;
list1 + list2 -
您应该编辑您的问题以更具体地了解正在发生的事情,而不是仅仅说您没有得到排序列表。