我試圖在不修改現有列表或使用內置函數(如sort
或sorted
)對列表進行排序。遇到負數時遇到問題。例如列表進行排序,帶負數的排序列表
[7,1,-5,18]
產生
[1, -5, 7, 18]
,而不是
[-5, 1, 7, 18]
我的代碼:
lst = [7,1,-5,18]
b = list()
init = lst[0]
for i in range(len(lst)):
b.append(lst[i])
if b[i]<init:
tmp = init
b[i-1] = b[i]
b[i] = tmp
print b
它的排序'[2,1, 0,3]'正確嗎?你已經跳到一個結論(你的程序不工作,如果列表包含負數),這是不保證。 –
由於排序的最佳方法是'O(logn)',它不是桶排序,似乎無法在一次循環迭代中對列表進行排序,因此肯定會出現代碼錯誤。你想用什麼alghoritm? –
@ m.antkowicz在O(log n)時間運行的排序算法?我不這麼認爲。 ;-)爲了對'n'元素上的序列進行排序,您應該至少查看每個元素一次以告訴它的發生位置,所以您不可能比'O(n)'更好(事實上,是這樣的算法,例如計數排序)。 –