我有一个列表列表,需要根据列表的长度进行排序。我现在正在做的是首先将列表插入主列表,然后对提供key=len
的主列表进行排序。此步骤的总时间为n + nlg(n)
。在将数据输入主列表时是否可以维护排序列表?可以使用bisect(或者有更好的方法)来完成它,如果是这样,它的表现会比n + nlg(n)
更好吗?
答案 0 :(得分:1)
这取决于您使用的数据结构:
O(log n)
O(n)
,因为您必须移动所有内容O(n)
)O(1)
。O(n)
O(log n)
摊销 O(log n)
或Theta(1)
。 python中的heapq是一个实现。您可以在堆中简单地推送项目,完成后,您可以在O(n)
中获取排序结果。同时,您可以在O(1)
中访问树的根,并在O(k)
中访问最小的k,排序。