查詢的次數降低到常數級別。即事先知道要查詢的資料項應該出現在什麼位置。
雜湊表(hash table,雜湊表),表中的每乙個儲存位置,成為槽(slot),可以用來儲存資料項,每個槽有乙個唯一的名稱。有利於快速的查詢定位。
雜湊函式:實現從資料項到儲存槽名稱的轉換的函式。
常用的雜湊方法是求餘數,將資料項除以雜湊表的大小,得到的餘數作為槽號。
完美雜湊函式:如果乙個雜湊函式能把每個資料項對映到不同槽中,成為完美雜湊函式。
但如果資料經常變動,則不一定總是完美的,會發生衝突。
python的雜湊函式庫hashlib
,包括了md5和sha系列的雜湊函式。
>>
>
import hashlib
>>
>hashlib.md5(
"hello world!"
.encode(
"utf-8"))
.hexdigest(
)'fc3ff98e8c6a0d3087d515c0473f8677'
>>
>hashlib.sha1(
"hello world!"
.encode(
"utf-8"))
.hexdigest(
)'430ce34d020724ed75a196dfc2ad67c77772d169'
#如果想輸入任意長度的資料,可以用update依次輸入進去
>>
>m=hashlib.md5(
)>>
>m.update(
"hello world!"
.encode(
"utf-8"))
>>
>m.update(
"nihao"
.encode(
"utf-8"))
>>
>m.update(
"piajun"
.encode(
"utf-8"))
>>
>m.hexdigest(
)'292ac436baa8a8793115d13529d5f184'
完美雜湊函式應用
區塊鏈技術
去中心化:不存在任何控制中心,所有節點都是平等的,無法被控制
不可修改性:任何對某個區域資料的改動必然引起雜湊值的變化
衝突解決方案
開放位址 open addressing 衝突後,向後搜尋空槽然後儲存
資料項鍊 chaining 把對乙個槽儲存資料項的集合
雜湊表 基本概念
雜湊表,又稱為雜湊表,是一種根據鍵來直接訪問記憶體位置的一種資料結構。它通過乙個計算鍵值的函式 雜湊函式 來將所查詢的資料對映到雜湊表中的乙個位置來查詢該位置的內容,從而達到快速查詢的目的。存放記錄的陣列就稱為雜湊表 若關鍵字為k,則其值就存放在f k 對應的位置上,這樣可以實現不用比較就可以直接找...
雜湊函式和雜湊衝突的基本概念
雜湊法又稱雜湊法 雜湊法以及關鍵字位址計算法等,相應的表成為雜湊表。基本思想 首先在元素的關鍵字k和元素的位置p之間建立乙個對應關係f,使得p f k 其中f成為雜湊函式。建立雜湊表時,把關鍵字k的元素直接存入位址為f k 的單元 查詢關鍵字k的元素時利用雜湊函式計算出該元素的儲存位置p f k 建...
基本概念 C 基本概念
由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...