數據結構中處理散列沖突的四種方法

1 開放定址法

1.1 定義

開放定址法就是一旦發生了沖突,就去尋找下一個空的散列地址

1.2 要求

只要散列表足夠大

空的散列地址總能找到,并將記錄存入

1.3 線性探測法

在這里插入圖片描述

使用該公式用于解決沖突的開放定址法稱為線性探測法

對于線性探測法,在出現沖突時,它只能晚后一步一步檢測看是否有空位置

假設此時該沖突位置后續沒有可用位置,但前面有一個空位置

盡管可以不斷地求余數后得到結果,但效率很差

1.4 二次探測法

因此可以改進該算法,增加雙向尋找可能的空位置,這種新算法稱為二次探測法:

在這里插入圖片描述

1.5 隨機探測法

此外還有一種方法是,在沖突時,對于位移量di采用隨機函數計算得到,我們稱為隨機探測法

在這里插入圖片描述
注意

這里的隨機其實是偽隨機數

即設置相同的隨機種子,則不斷調用隨機函數的過程中就可以生成不會重復的數列

同時,在查找時,用同樣的隨機種子,它每次得到的數列也是相同的

因此相同的di就可以得到相同的散列地址

2 再散列函數法

2.1 散列函數

即提供多個散列函數
在這里插入圖片描述

2.2 解釋

這里的RHi就是不同的散列函數然后每當發生散列地址沖突時

就換一個散列函數計算

相信總會有一個可以把沖突解決掉(todo:: how to search??)

2.3 優點弊端

2.3.1 優點

這種方法能夠使得關鍵字不產生聚集

2.3.2 弊端

當然,相應地也增加了計算的時間

3 鏈地址法

3.1 定義

將所有關鍵字為同義詞(即哈希地址相同)的記錄存儲在一個單鏈表中,我們稱這種表為同義詞子表

在散列表中只存儲所有同義詞子表的頭指針

3.2 優點弊端

3.2.1 優點

鏈地址法對于可能會造成很多沖突的散列函數來說

提供了絕不會出現找不到地址的保障

3.2.2 弊端

當然,這也就帶來了查找時需要遍歷單鏈表的性能損耗

4 公共溢出區法

即為所有沖突的關鍵字建立一個公共的溢出區來存放

在查找時,對給定值通過散列函數計算出散列地址后先與基本表的相應位置進行比對如果相等,則查找成功如果不相等,則到溢出表去進行順序查找如果對于基本表而言,有沖突的數據很少的情況下

公共溢出區的結構對查找性能來說還是非常高的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209460.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209460.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209460.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【異常】SpringBoot3.2.0 Description: Failed to configure a DataSource: ‘url‘ att

mybatisPlus 多數據源導致 異常 Description:Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the following:If you want an embed…

通過kubeadm方式安裝k8s

虛擬機最少是 2 core,master內存最小3G,node內存最小2G. 要求的Docker版本是18.03,如果不是安裝的docker ce,版本是過舊的,可以選擇刪除后重新安裝; 也可以重新創建一個虛擬機執行以下命令。 簡單方法&am…

線性代數基礎【1】行列式

第一節 行列式的基本概念和性質 一、基本概念 ①逆序 1,2和2,1是一對逆序 ②逆序數 1,2,3,5,4的逆序數為1;1,3,2,5,4逆序數為4; ③行列式 ④余子數和代數余子數 行列式挖掉一個數(例如aij),將原行列式去掉i行j列的行列式M,則M為余子數,代數余子數記為Aij,如果(ij)為偶數…

云LIS實驗室信息管理系統源碼——實驗室信息管理解決方案

云LIS(Cloud Laboratory Information System)是一種為區域醫療提供臨床實驗室信息服務的計算機應用程序,其主要功能是協助區域內所有臨床實驗室相互協調并完成日常檢驗工作,對區域內的檢驗數據進行集中管理和共享,通過…

uniapp引入插件市場echarts圖表(l-echart)實現小程序端圖表,并修改源碼簡化使用

使用的uniapp插件:l-echart https://ext.dcloud.net.cn/plugin?id4899 注意事項 1.因為小程序有主包分包大小限制,并且uni_modules中的包也會算在主包體積中,而我項目中的圖表是在分包中使用的,所以我移動uni_modules中的l-echart圖表組件…

Python 的list是...

對 Python list遺憾 sum 對列表執行正確的操作幾乎是不可能的。 my_list list(range(1, 100001))能夠執行 sum()、min() 和 max() 的情況非常罕見。 sum(my_list)5000050000比如mean(), std() ,這些也不行。 mean(my_list)----------------------------------…

高通CRM的v4l2驅動模型

概述下crm中v4l2框架的初始化創建流程: 對于CRM主設備的v4l2框架創建過程: 1、分配和初始化v4l2 device對象 2、分配和初始化media device對象,然后將v4l2 device中mdev綁定到media device上 3、分配和初始化video device對象&#xff0c…

Python:核心知識點整理大全9-筆記

目錄 ?編輯 5.2.4 比較數字 5.2.5 檢查多個條件 1. 使用and檢查多個條件 2. 使用or檢查多個條件 5.2.6 檢查特定值是否包含在列表中 5.2.7 檢查特定值是否不包含在列表中 banned_users.py 5.2.8 布爾表達式 5.3 if 語句 5.3.1 簡單的 if 語句 5.3.2 if-else 語句 …

Java中sleep() 和 wait() 有什么區別?

Java中sleep() 和 wait() 有什么區別? sleep() 和 wait() 是兩個在 Java 中用于線程控制的方法,它們有一些重要的區別: 關聯對象: sleep() 是 Thread 類的靜態方法,它讓當前線程休眠指定的時間,不釋放對象…

YOLOv8改進 | 2023 | RCS-OSA替換C2f實現暴力漲點(減少通道的空間對象注意力機制)

一、本文介紹 本文給大家帶來的改進機制是RCS-YOLO提出的RCS-OSA模塊,其全稱是"Reduced Channel Spatial Object Attention",意即"減少通道的空間對象注意力"。這個模塊的主要功能是通過減少特征圖的通道數量,同時關注空…

Android Studio APK打包指定包名

在最近寫的一個案列中嘗試用最新版的Android studio對項目進行打包測試,想要指定打包的包名這樣便于區分的時候發現以前的許多方法都過時了,查了很多資料才弄明白each被拋棄了。本教程建議先看第三步。 目錄 一、配置根目錄下gradle.build 二、通過bui…

Billu_b0x

信息收集 #正常進行信息收集就好Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-18 22:07 CST Nmap scan report for 192.168.182.142 (192.168.182.142) Host is up (0.00073s latency).PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-cookie-flags:…

VSC改造MD編輯器及圖床方案分享

VSC改造MD編輯器及圖床方案分享 用了那么多md編輯器,到頭來還是覺得VSC最好用。這次就來分享一下我的blog文件編輯流吧。 這篇文章包括:VSC下md功能擴展插件推薦、圖床方案、blog文章管理方案 VSC插件 Markdown All in One Markdown Image - 粘粘圖片…

【電子通識】為什么電阻都是2.2、3.3、4.7、5.1這樣的小數,而不是整數?

剛開始接觸電路設計可能會對市面上已經有的電阻值如:2.2Ω、4.7Ω、5.1Ω、22Ω、47Ω、51Ω,通常都不是整數覺得非常困惑,所以查閱了一些資料,總結如下: 電阻是使用指數分布來設計生產的,即遵循國際電工委…

【CSP】202303-2_墾田計劃Python實現

文章目錄 [toc]試題編號試題名稱時間限制內存限制問題描述輸入格式輸出格式樣例輸入1樣例輸出1樣例解釋樣例輸入2樣例輸出2樣例解釋子任務Python實現 試題編號 202303-2 試題名稱 墾田計劃 時間限制 1.0s 內存限制 512.0MB 問題描述 頓頓總共選中了 n n n塊區域準備開墾田地&a…

基于STM32 + DMA介紹,應用和步驟詳解(ADC多通道)

前言 本篇博客主要學習了解DMA的工作原理和部分寄存器解析,針對ADC多通道來對代碼部分,應用部分作詳細講解,掌握代碼編程原理。本篇博客大部分是自己收集和整理,如有侵權請聯系我刪除。 本次博客開發板使用的是正點原子精英版&am…

23種策略模式之策略模式

文章目錄 前言優缺點使用場景角色定義UML模擬示例小結 前言 在軟件開發中,設計模式是為了解決常見問題而提供的一套可重用的解決方案。策略模式(Strategy Pattern)是其中一種常見的設計模式,它屬于行為型模式。該模式的核心思想是…

Java程序設計實驗6 | 集合類

*本文是博主對Java各種實驗的再整理與詳解,除了代碼部分和解析部分,一些題目還增加了拓展部分(?)。拓展部分不是實驗報告中原有的內容,而是博主本人自己的補充,以方便大家額外學習、參考。 (解…

基于ssm的大型商場會員管理系統論文

摘 要 進入信息時代以來,很多數據都需要配套軟件協助處理,這樣可以解決傳統方式帶來的管理困擾。比如耗時長,成本高,維護數據困難,數據易丟失等缺點。本次使用數據庫工具MySQL和編程框架SSM開發的大型商場會員管理系統…

【漏洞復現】FLIR AX8紅外線熱成像儀命令執行漏洞

漏洞描述 eledyne FLIR 設計、開發、制造以及強大的傳感和意識技術。自透射熱圖像、可見光圖像、可見頻率分析、來自測量和診斷的先進威脅測量系統以及日常生活的創新解決方案。 Teledyne FLIR 提供多種產品用于政府、國防、工業和商業市場。我們的產品,緊急救援人員,軍事人…