[英]Python vs C# dictionaries
MSDN文档谈到平均案例时间复杂度(更具体地说,他们说这种复杂度“逼近”给定的函数),这些与Python文档中介绍的相同。 Python还提供了最坏情况的复杂性。 对于某些操作,MSDN还提供最坏情况的估计(例如: http : //msdn.microsoft.com/zh-cn/library/k7z0zy8k%28v=vs.110%29.aspx )。
将平均情况与最坏情况进行比较是没有意义的。
在实践中跳过理论:一般情况描述您在执行操作时通常应该期望的内容。 最坏的情况通知您,有时在某些特定条件下和/或对于某些特定数据,该操作的执行速度可能会变慢。
另外,最好专注于一个特定的操作。 通常,讨论“字典的复杂性”也没有多大意义。
我假设Python和C#中的字典使用的实现大致相同:哈希查找。
哈希查找的时间顺序比O(1)大。 平均而言,一旦密钥被散列,就可以一次访问或更长时间(对于散列冲突)找到它。
哈希查找的最坏情况是O(n)。 如果字典中的所有键都具有相同的哈希值,则搜索(通常)等效于线性蛮力。
因此,是的,Python具有最坏的情况O(n),而C#的平均时间复杂度为O(1+)。 另一方面,Python的平均时间复杂度为O(1+),而C#的最坏情况为O(n)。
换句话说,它们是相同的(近似一阶)。 您可能会遇到的所有其他问题也是如此。
但是请注意任何排序字典。 他们有很大的不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.