爲了好玩,我試圖實現k路合併排序,其中k = 3。我沒有問題遞歸調用mergesort,但我試圖合併三個列表在一起,但我沒有得到一個排序列表。基本的想法是,我比較每個列表的第一個元素,如果它是最小的,我將它附加到列表中。我重複所有陣列的過程。將三個列表合併在一起
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)
你知道,這可能是一個/兩個班輪。想到「排序(a + b + c)」。 – Amelia
返回列表應該在你的while循環中還是在它之後? –
我試圖不使用內置函數 – phil12