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