簡體   English   中英

Python與C#字典

[英]Python vs C# dictionaries

我已經在Python中編碼了一段時間了,我習慣於認為字典具有最差情況O(n)的時間復雜度( 來源 )。 但是,在工作中我必須使用C#,並且我最近才發現C#中的字典具有更好的時間復雜度( source )。 這是為什么? python字典比C#字典有什么優勢?

順便說一下,哪種實現更普遍? 如果我不得不使用另一種語言的標准庫中的詞典,那么他們最有可能會花費什么時間?

謝謝!

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM