1
我有一個列表,需要根據列表的長度對列表進行排序。我現在所做的是首先將列表插入主列表,然後對給出key=len
的主列表進行排序。此步驟總共需要n + nlg(n)
。將數據輸入到主列表中時是否可以維護排序列表?它可以使用平分線(或有更好的方法),如果是的話,它會比n + nlg(n)
更好嗎?如何在Python中輸入數據時保留排序列表
我有一個列表,需要根據列表的長度對列表進行排序。我現在所做的是首先將列表插入主列表,然後對給出key=len
的主列表進行排序。此步驟總共需要n + nlg(n)
。將數據輸入到主列表中時是否可以維護排序列表?它可以使用平分線(或有更好的方法),如果是的話,它會比n + nlg(n)
更好嗎?如何在Python中輸入數據時保留排序列表
這取決於正在使用的數據結構:
O(n)
因爲你必須轉移O(log n)
一切O(n)
)O(1)
。同時保持O(n)
O(log n)
攤銷O(log n)
或Theta(1)
。 python中的heapq是一個實現。您可以在堆中簡單地推送項目,並在完成後,可以在O(n)
中獲得排序結果。同時,您可以訪問O(1)
中的樹的根目錄,並且在O(k)
中的k最小,排序。
嘗試[sortedcontainers](http://www.grantjenks.com/docs/sortedcontainers/sortedlistwithkey.html) – syntonym
此['SortedCollection'](http://code.activestate.com/recipes/577197- sortedcollection /)reciple可能會有幫助(使用'bisect')。 – martineau