雜湊表。筆試面試知識整理

2021-08-19 19:36:21 字數 502 閱讀 4280

雜湊表(hash table,也叫雜湊表),是根據關鍵碼值 (key-value) 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。雜湊表的實現主要需要解決兩個問題,雜湊函式和衝突解決。

雜湊函式也叫雜湊函式,它對不同的輸出值得到乙個固定長度的訊息摘要。理想的雜湊函式對於不同的輸入應該產生不同的結構,同時雜湊結果應當具有同一性(輸出值盡量均勻)和雪崩效應(微小的輸入值變化使得輸出值發生巨大的變化)。

現實中的雜湊函式不是完美的,當兩個不同的輸入值對應乙個輸出值時,就會產生「碰撞」,這個時候便需要解決衝突。

常見的衝突解決方法有開放定址法,鏈位址法,建立公共溢位區等。實際的雜湊表實現中,使用最多的是鏈位址法

鏈位址法

鏈位址法的基本思想是,為每個 hash 值建立乙個單鏈表,當發生衝突時,將記錄插入到鍊錶中。

例 2 設有 8 個元素 ,採用某種雜湊函式得到的位址分別為: ,當雜湊表長度為 10 時,採用鏈位址法解決衝突的雜湊表如下圖所示:

鍊錶筆試面試題

有些許錯誤,第乙個程式 1.已知鍊錶的頭結點head,寫乙個函式把這個鍊錶逆序 cpp view plain copy void list reverse head next null head p 遞迴方法 cpp view plain copy void list reverse2 list n...

筆試面試 經典筆試題整理

以下內容全部整理自網路。把整數關鍵碼k雜湊到n個槽列表,最好的雜湊函式是 h k k rand n mod n,rand n 返回0到n 1的整數 初始資料集的排列順序對演算法的效能無影響的是 堆排序 堆排序 最優時間複雜度o nlogn 最差時間複雜度o nlogn 平均時間複雜度o nlogn ...

筆試面試知識細節

儲存在全域性資料區 靜態變數限制在模組內 作用域內 靜態變數限制在本檔案中,不可被模組外的其他函式呼叫 靜態全域性變數 只初始化一次,防止被其他檔案單元被引用 靜態區域性變數 只初始化一次 靜態成員變數 無論有多少個類的物件,靜態資料成員只有乙個例項,由所有物件共享訪問,在類外初始化,不與全域性變數...