拉鏈法的理解


原理

把具有相同散列地址的關鍵字(同義詞)值放在同一個單鏈表中,稱為同義詞鏈表。
有m個散列地址就有m個鏈表,同時用指針數組T[0..m-1]存放各個鏈表的頭指針,
凡是散列地址為i的記錄都以結點方式插入到以T[i]為指針的單鏈表中。
T中各分量的初值應為空指針。

用途

主要用於解決key值沖突的問題

場景

  • HashMap就用了拉鏈法 HashMap的key是轉化成了hashcode,這個值是可能重復的,但是為什么HashMap沒有問題

  • 求集合交集

image

有序集合1{1,3,5,7,8,9}

有序集合2{2,3,4,5,6,7}

兩個指針指向首元素,比較元素的大小:

  • 如果相同,放入結果集,隨意移動一個指針

  • 否則,移動值較小的一個指針,直到隊尾

這種方法的好處是:

(1)集合中的元素最多被比較一次,時間復雜度為O(n)

(2)多個有序集合可以同時進行,這適用於多個分詞的item求url_id交集

這個方法就像一條拉鏈的兩邊齒輪,一一比對就像拉鏈,故稱為拉鏈法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM