python演算法 雜湊表

2021-10-24 02:18:22 字數 1305 閱讀 7772

今天我們來學習一下python語法中的雜湊表

雜湊表最有用的基本資料結構之一

雜湊函式:

雜湊函式是將輸入對映到數字雜湊函式輸出的數字是沒什麼規律的,但是它必須滿足一定的要求:

1.它必須是一致的每次輸入相同時,得到的也必須都相同

2.它將不同的輸入對映到不同的數字

我們能在雜湊表中準確的找到儲存的位置原因如下:

1.雜湊函式總是將同樣的輸入對映到相同的索引2.雜湊函式將不同的輸入對映到不同的索引

3.雜湊函式知道陣列有多大,只返回有效的索引

雜湊表是結合雜湊函式和陣列建立的資料結構,是一種包含額外邏輯的資料結構,也被稱為雜湊對映,對映,字典和關聯陣列,python提供的雜湊表實現為字典可以使用 函式dict 來建立(如有不太理解的地方下方鏈結)

關於python中字典的介紹

例子:我們有乙個好友叫tom,他的年齡是18歲,我們將他的資料儲存在雜湊表中,我們還有乙個好友叫marry,他的年齡是20歲,我們也將她的資料儲存在雜湊表中,但是我們還有乙個好友也叫tom,他今年19歲,若我們還是講tom作為鍵在雜湊表中進行資訊的儲存,我們就只能查到tom的年齡是19歲,卻查不到18歲的那個tom,這就叫做衝突

為了解決這種問題,我們可以講兩個tom都對映到同乙個位置,在這個位置儲存乙個列表,我們就可以查到兩個tom的資訊了,但是查詢的速度可能會比查詢marry時慢一點

但是我們還應該注意:

1.雜湊函式很重要,我們應該講雜湊函式均勻的對映到雜湊表的不同位置2.如果雜湊表儲存的鍊錶很長,雜湊表的速度就會急劇下降

簡單查詢的執行時間是線性時間

二分查詢的執行時間是對數時間

在雜湊表執行各種操作的時間都為o(1),被稱為常量時間,無論雜湊表包含的元素是1個還是10000個,獲取資料所需的時間都是相同的

在使用雜湊表過程中,避免出現最糟糕的情況至關重要,為此需要避免衝突,需要:

1.較低的填裝因子

2.良好的雜湊函式

當填裝因子大於1時就表示雜湊表中的元素數大於雜湊表的位置數,就需要在雜湊表中新增位置,這被稱為調整長度

填裝因子越小,發生衝突的可能性越小,雜湊標的效能就越高

小經驗(一旦填裝因子大於0.7就調整長度)

良好的雜湊函式讓陣列中的值呈均勻分布, 糟糕的雜湊函式讓值扎堆,導致大量的衝突

演算法入門 雜湊表 python實現

該內容來自 演算法 一書,只是對書的內容做一些記錄。我們使用雜湊函式將給定鍵轉化為乙個 陣列的索引 理想情況下,不同的key會被轉為不同的索引。關鍵碼和儲存位置之間的對應函式是雜湊函式,也稱為雜湊函式,hash函式。雜湊表查詢時間為o 1 phone book dict 字典phone book 如...

雜湊表演算法

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

雜湊表演算法

今天大概講一講雜湊表的原理,構造,衝突等。雜湊 hash 是什麼,其實雜湊就是一種對映,將一些線性資料通過乙個函式 h算出乙個值作為下表,定義乙個 a陣列單元來按照下標儲存資料。舉例 離散優化就是一種特殊的雜湊,它的函式比較簡單。如圖,如果這個陣列的資料下標不大的話,我們就可以直接排序算出距離,但當...