[英]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.