我試圖編寫此函數gensort(list)
,該函數使用數字列表並返回具有相同數字的新列表,但按從低到高的順序排列。輸出的一個例子是像如何將列表項從低到高排序而不使用內置工具
>>> gensort([111, 1, 3.14])
[1, 3.14, 111]
我寫了一個函數取一個元素,它在上升奧得回到原來的位置:
def insert_sorted(elem,list):
if list == []:
return [elem]
elif elem < list[0]:
return [elem] + list
else:
return [list[0]] + insert_sorted(elem, list[1:])
現在我想將它應用到我的清單的其餘部分和我想出了這個:
def gensort(list):
insert = insert_sorted(list[min],list)
return insert
但是,這並不起作用。我想知道如何遞歸地使用insert_sorted,或者寫一個不同的列表理解來讓它返回我整個列表的正確順序。
我知道有內置的排序工具,但我試圖用我現在有的東西寫這個。
請修復您的縮進。 – 2014-10-05 16:27:19
有很多排序算法 - 你看起來像你試圖寫一個插入排序 - 從前面排序。你也可以做一個冒泡排序 - 從後面進行有效排序 - 或者快速排序。關於不同排序類型的算法,大量的信息在線。此外,我會嘗試在更簡單的功能上進行遞歸,然後再執行此類操作 - 因爲您可能會發現調試非常困難。 – 2014-10-05 16:30:32
insert_sorted中使用的遞歸看起來很好,並且從頭開始編寫排序函數的願望值得稱讚。我不明白爲什麼這項工作受到批評。 – 2014-10-05 16:37:14