我有這樣的代碼:的Python:不能在O(n)的開始歸併排序兩個排序列表中最大的第一
def msort(l1,l2):
new=[]
x=0
for item in l1:
if l1[x]>l2[x]:
new.append(l1[x])
l1.remove(l1[x])
elif l2[x]>l1[x]:
new.append(l2[x])
l2.remove(l2[x])
else:
new.append(l1[x])
new.append(l2[x])
l1.remove(l1[x])
l2.remove(l2[x])
x+=1
print(new)
,我希望它打印:
>>> ssort([9,5,3,2,1],[6,5,4,1])
[9,6,5,5,4,3,2,1,1]
但我得到這個作爲我的輸出:
[9, 5, 2]
這是爲什麼?我該如何解決它?我不允許使用任何排序的函數,它必須是O(n)。我試圖查看列表中的前2項,追加更大的項目,擺脫它,然後再做,直到列表爲空,但似乎沒有工作。列表已經從最大數量下降開始排序。
謝謝。
你應該做一些調試。 – 2014-11-24 18:08:26
你不能修改你正在迭代的數組(或者說,你可以,但是你不會得到預期的結果)。 – 2014-11-24 18:09:42
好的。我將如何修復我的?製作每個列表的另一個副本? – Sawyer 2014-11-24 18:10:46