當前位置:首頁 » 編程語言 » Python數據結構與演算法教程

Python數據結構與演算法教程

發布時間: 2025-03-19 10:05:25

python數據結構與演算法-哈希map的實現及原理

1-collections.MutableMapping

1.1 概念:這是什麼?

大家可能想知道這一串英文是什麼意思?其實只需要了解在collections庫當中有一個非常重要的抽象基類MutableMappin

g,專門用於實現map的一個非常有價值的工具。後邊我們會用到它。

2-我們的map基類


2.1 實現這個類

這個基類其實也就是確定了鍵值對的屬性,並且存儲了基本的比較方法。它的對象就是一個鍵值對咯。這個很好理解。有點類似object的感覺。

3-通過map基類實現的無序映射

給大家看一個上邊的例子,這個例子來源於網路,自己改了改,能用,更加詳細而已,湊合看.

4-Python哈希表的實現的基類

4.1 咱有話直說:上才(代)藝(碼)

如果還不知道哈希表概念的同xio,請參考 python進階之數據結構與演算法–中級-哈希表(小白piao分享) 。廢話不多說,咱們擼代碼:

OK了,基本的哈希表就實現了,其實仔細想想很容易,但是自己要能實現還是要理解哈希表的本質哦,外加一定量的練習才可以熟練掌握,練習的目的就是為了熟練而已。

5-分離鏈表實現的具體哈希map類

說明:這玩意只是一種降低沖突的手段,上一節提過,降低沖突最好的地方是發生在元組進入桶的時候,所以想必大家猜到了,接下來的分離鏈表也就是為了self._bucket_xxxxxxx系列方法做准備。這里之所以在上邊使用@abstractmethod就是為了繼承實現,目的可以實現多種將沖突的哈希表。分離鏈表的概念上一節也有的。
「見碼入面」(借鑒:見字如面這個電視節目,有興趣可以看看,還不錯的):

6-用線性探測處理沖突的哈希map類

這種方式的好處不需要再去藉助其他額外的賦值結構來表示桶。結構更加簡單。不會再像上一種方法還要讓桶是一個UnsortedTableMap的對象。
代碼如下:

熱點內容
sql教材 發布:2025-03-20 08:53:34 瀏覽:143
直演算法數學 發布:2025-03-20 08:53:28 瀏覽:540
銀行卡提款密碼是多少 發布:2025-03-20 08:52:44 瀏覽:952
光遇安卓馬里奧為什麼進去就出來 發布:2025-03-20 08:49:53 瀏覽:87
obs如何配置直接觀看視頻 發布:2025-03-20 08:49:42 瀏覽:664
ios編程培訓班 發布:2025-03-20 08:48:43 瀏覽:684
python能找工作嗎 發布:2025-03-20 08:48:41 瀏覽:309
便宜的雲資料庫 發布:2025-03-20 08:47:31 瀏覽:854
顯卡配置低如何提高性能 發布:2025-03-20 08:44:10 瀏覽:641
廣西公需科目用戶名和密碼是什麼 發布:2025-03-20 08:39:09 瀏覽:271