hash解決衝突的方法優缺點
hash表解決衝突的方法:
1.開放定址法
1.1 線性探測法
1.2 二次探測法
1.3 隨機探測法
2.鏈地址法
3.公共溢位區法
這種方法需要兩個表,分別是基本表、溢位表
鏈地址法的優點
與開放定址法相比,拉鍊法有如下幾個優點:
①鏈地址法處理衝突簡單,且無堆積現象,即非同義詞決不會發生衝突,因此平均查詢長度較短;
②由於鏈地址法中各連結串列上的結點空間是動態申請的,故它更適合於造表前無法確定表長的情況;
③開放定址法為減少衝突,要求裝填因子α較小,故當結點規模較大時會浪費很多空間。而鏈地址法中可取α≥1,且結點較大時,鏈地址法中增加的指標域可忽略不計,因此節省空間;
④在用鏈地址法構造的雜湊表中,刪除結點的操作易於實現。只要簡單地刪去連結串列上相應的結點即可。而對開放地址法構造的雜湊表,刪除結點不能簡單地將被刪結 點的空間置為空,否則將截斷在它之後填人雜湊表的同義詞結點的查詢路徑。這是因為各種開放地址法中,空地址單元(即開放地址)都是查詢失敗的條件。因此在 用開放地址法處理衝突的雜湊表上執行刪除操作,只能在被刪結點上做刪除標記,而不能真正刪除結點。
鏈地址法的缺點
鏈地址法的缺點是:指標需要額外的空間,故當結點規模較小時,開放定址法較為節省空間,而若將節省的指標空間用來擴大雜湊表的規模,可使裝填因子變小,這又減少了開放定址法中的衝突,從而提高平均查詢速度。
相關文章
- hash衝突解決方法
- 關於hash衝突的解決
- css命名衝突解決方法CSS
- 依賴衝突時的解決方法
- 解決預設方法衝突的規則
- linux下SVN衝突的解決方法Linux
- PPT中聲音“衝突”的解決方法
- 使用SUI與JQuery衝突的解決方法UIjQuery
- maven依賴衝突以及解決方法Maven
- Git 解決衝突Git
- git 解決衝突Git
- Android Studio 包衝突的解決方法Android
- Flutter | 如何優雅的解決依賴版本衝突Flutter
- Android Studio 包衝突解決方法Android
- Git:程式碼衝突常見解決方法Git
- python解決反爬蟲方法的優缺點對比Python爬蟲
- 淺談雜湊法及其解決衝突的方法
- 關於Hash 函式 雜湊索引表 解決位置衝突的問題函式索引
- 程式衝突及其解決
- git pull 衝突解決Git
- windows解決埠衝突Windows
- IP衝突解決方案
- SVN 版本衝突解決
- Git衝突解決技巧Git
- 常用的幾種專案衝突管理的解決方法
- 雙擊和單擊事件衝突解決方法事件
- git pull衝突的解決方案Git
- JAR衝突問題的解決JAR
- 關於SVN update之後,引起衝突的解決方法
- SVN解決衝突 記錄
- 流衝突解決方案——流
- 解決jquery和其他庫的衝突jQuery
- Win10系統提示“ip地址衝突”的解決方法Win10
- Git 衝突了怎麼辦,如何高效快速的解決程式碼衝突?Git
- git 解決版本衝突問題Git
- Git命令列下解決衝突Git命令列
- Eclipse中Egit衝突解決EclipseGit
- Linux下檢測IP地址衝突及解決方法Linux