我有一个未排序的字典,其中一个键的值是一个整数。
我希望得到值大于某个int k
的所有键。
k
进行比较。为O(n)我很好奇这是否可以比O(n)更好。
答案 0 :(得分:1)
首先,Python dicts是未排序的(它们是哈希表),所以当你谈论排序dict时,你真的在谈论不同的数据结构。
如果您只需要执行一次,那么O(n)
就可以了,因为您需要检查每个n
键。使用词典理解,你就完成了。
如果您需要反复执行此操作,则可能需要一些时间来转移到不同的数据结构。是否值得,取决于dict的大小,更改的频率,搜索需要的次数,每次搜索返回的密钥数等。更具体地说,我们需要更多信息。
最后但并非最不重要的是,根据具体情况,从O(n)
转移到O(log n)
并不总是一场胜利。例如,如果n
足够小,线性搜索可能会变得最快。一个好的总体策略是采用最简单的实现并对代码进行分析,以确定是否可以从优化代码中获得任何东西。