hash解決衝突的方法優缺點
hash表解決衝突的方法:
1.開放定址法
1.1 線性探測法
1.2 二次探測法
1.3 隨機探測法
2.鏈地址法
3.公共溢位區法
這種方法需要兩個表,分別是基本表、溢位表
鏈地址法的優點
與開放定址法相比,拉鍊法有如下幾個優點:
①鏈地址法處理衝突簡單,且無堆積現象,即非同義詞決不會發生衝突,因此平均查詢長度較短;
②由於鏈地址法中各連結串列上的結點空間是動態申請的,故它更適合於造表前無法確定表長的情況;
③開放定址法為減少衝突,要求裝填因子α較小,故當結點規模較大時會浪費很多空間。而鏈地址法中可取α≥1,且結點較大時,鏈地址法中增加的指標域可忽略不計,因此節省空間;
④在用鏈地址法構造的雜湊表中,刪除結點的操作易於實現。只要簡單地刪去連結串列上相應的結點即可。而對開放地址法構造的雜湊表,刪除結點不能簡單地將被刪結 點的空間置為空,否則將截斷在它之後填人雜湊表的同義詞結點的查詢路徑。這是因為各種開放地址法中,空地址單元(即開放地址)都是查詢失敗的條件。因此在 用開放地址法處理衝突的雜湊表上執行刪除操作,只能在被刪結點上做刪除標記,而不能真正刪除結點。
鏈地址法的缺點
鏈地址法的缺點是:指標需要額外的空間,故當結點規模較小時,開放定址法較為節省空間,而若將節省的指標空間用來擴大雜湊表的規模,可使裝填因子變小,這又減少了開放定址法中的衝突,從而提高平均查詢速度。
相關文章
- hash衝突解決方法
- css命名衝突解決方法CSS
- 依賴衝突時的解決方法
- 解決預設方法衝突的規則
- maven依賴衝突以及解決方法Maven
- python解決反爬蟲方法的優缺點對比Python爬蟲
- git 解決衝突Git
- Git 解決衝突Git
- Flutter | 如何優雅的解決依賴版本衝突Flutter
- 常用的幾種專案衝突管理的解決方法
- 程式衝突及其解決
- git pull 衝突解決Git
- Git衝突解決技巧Git
- git pull衝突的解決方案Git
- JAR衝突問題的解決JAR
- 關於SVN update之後,引起衝突的解決方法
- SVN解決衝突 記錄
- Git 衝突了怎麼辦,如何高效快速的解決程式碼衝突?Git
- git 解決版本衝突問題Git
- HTML中兩個tabs導航衝突問題的解決方法HTML
- 解決動態庫的符號衝突符號
- cad快捷鍵和win10衝突怎麼辦_cad快捷鍵和win10衝突的解決方法Win10
- IIS子目錄web.config與主站衝突解決方法Web
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- Android 解決BottomSheetDialog 拖曳衝突問題Android
- Android com.android.support衝突解決Android
- Git 解決本地遠端版本衝突Git
- Jar包衝突解決方案調研JAR
- GO 問題之多版本衝突解決Go
- Elasticsearch——併發衝突以及解決方案Elasticsearch
- Maven依賴衝突解決總結Maven
- com.android.support衝突的解決辦法Android
- 解衝突用到的命令
- [20181130]如何猜測那些值存在hash衝突.txt
- [20181130]hash衝突導致查詢緩慢.txt
- Python語言的優缺點詳解!Python
- 在Java中,HashMap中是用哪些方法來解決雜湊衝突的?JavaHashMap
- win10系統下魔獸世界按鍵衝突的解決方法Win10