雜湊表(雜湊表)

2021-09-19 01:29:01 字數 1770 閱讀 2227

class

hashmap

(object):

2def

__init__

(self):3

# 初始化總表為,容量為2的**(含兩個子表)

4 self.maps = bettermap(2)

5 self.num =

0# 表中資料個數67

defget

(self,k):8

return self.maps.get(k)910

defadd

(self, k, v):11

# 若當前元素數量達到臨界值(子表總數)時,進行重排操作

12# 對總表進行擴張,增加子表的個數為當前元素個數的兩倍!

13if self.num ==

len(self.maps.maps)

:14 self.resize()15

16# 往重排過後的 self.map 新增新的元素

17 self.maps.add(k, v)

18 self.num +=119

20def

resize

(self):21

""" 重排操作,新增新錶, 注意重排需要線性的時間 """

22# 先建立乙個新的表,子表數 = 2 * 元素個數

23 new_maps = bettermap(self.num *2)

2425

for m in self.maps.maps:

# 檢索每個舊的子表

26for k,v in m.items:

# 將子表的元素複製到新子表

27 new_maps.add(k, v)

2829 self.maps = new_maps # 令當前的表為新錶

class

bettermap

(object):

2""" 利用linearmap物件作為子表,建立更快的查詢表 """

3def

__init__

(self,n=

100)

:4 self.maps =

# 總**

5for i in

range

(n):

# 根據n的大小建立n個空的子表))

78deffind_map

(self,k)

:# 通過hash函式計算索引值

9 index =

hash

(k)%

len(self.maps)

10return self.maps[index]

# 返回索引子表的引用

1112

# 尋找合適的子表(linearmap物件),進行新增和查詢

13def

add(self, k, v)

:14 m = self.find_map(k)

15 m.add(k,v)

1617

defget

(self, k)

:18 m = self.find_map(k)

19return m.get(k)

實現乙個基於鍊錶法解決衝突問題的雜湊表

實現乙個 lru 快取淘汰演算法

雜湊表學習筆記

雜湊表 雜湊表

一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...

雜湊表(雜湊表)

雜湊表是最基礎的資料結構之一,利用鍵值對儲存並檢索資料的一種非線性結構。在其它各種結構線性表 樹等資料結構中,記錄在結構中的位置是隨機的,和記錄關鍵字之間不存在確定的關係,因此,在結構中查詢記錄時需進行一系列和關鍵字的 比較 的基礎上。在順序查詢時,比較的結果為 與 兩種可能 在折半查詢 二叉排序樹...

雜湊表(雜湊表)

原文 雜湊表是種資料結構,它可以提供快速的插入操作和查詢操作。第一次接觸雜湊表時,它的優點多得讓人難以置信。不論雜湊表中有多少資料,插入和刪除 有時包括側除 只需要接近常量的時間即0 1 的時間級。實際上,這只需要幾條機器指令。對雜湊表的使用者一一人來說,這是一瞬間的事。雜湊表運算得非常快,在電腦程...