吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HASH哈希游戲開發(技術方案):開放尋址法詳解

開發丨KFZ433 ? 來源:開發丨KFZ433 ? 作者:開發丨KFZ433 ? 2022-06-29 13:50 ? 次閱讀

什么是哈希開放尋址法?

開放尋址法,就是當發生哈希沖突時,重新找到空閑的位置,然后插入元素。尋址方式有多種,常用的有線性尋址、二次方尋址、雙重哈希尋址:

?線性尋址?,當需要插入元素的位置被占用時,順序向后尋址,如果到數組最后也沒找到一個空閑位置,則從數組開頭尋址,直到找到一個空閑位置插入數據。線性尋址的每次尋址步長是1,尋址公式??hash(key)+n??(n是尋址的次數)。 ?二次方尋址?,就是線性尋址的總步長的二次方,即??hash(key)+n^2??。 ?雙重哈希尋址?,顧名思義就是多次哈希直到找到一個不沖突的哈希值。

pYYBAGK7566APp7lAABex73Fz_M407.png

采用開放尋址法解決哈希沖突,又該如何查找元素和刪除元素呢?

查找元素的過程和插入元素類似,用相同的尋址方式,尋址的同時比對key或者value是否相等,相等則認為元素存在,不相等則繼續尋址,?如果探測到空閑位置依然沒有找到則認為該元素不存在?。

刪除有些特別,?不能單純的把要刪除的元素設置為空?,因為在查找元素的過程中探測到的空閑位置是刪除元素的位置,就會使得查找元素的尋址算法失效,本來存在的元素誤判定為不存在。該如何解決這個問題呢?

?只需要刪除元素不是物理刪除而是邏輯刪除?。給刪除的元素做上delete標記,當查詢元素尋址時遇到delete標記的位置時不會停下來而是?繼續向后探測?,但是在插入元素尋址遇到delete標記的位置就會把應該刪除的元素替換掉。

三種尋址方式都有著明顯的不足:

線性尋址,尋址的性能雖然元素個數的增多逐步下降,最壞時間復雜度是O(n)。 二次方尋址,尋址的次數比線性尋址較低了,但是會因為步長是二次方,所以需要較長的數組長度,內存利用率可能較低。 雙重哈希尋址,多次哈希可能會浪費時間,需要優質的哈希函數做支撐。

而整個開放尋址法的不足也很明顯:

插入、查找、刪除都需要尋址。 數組中元素越多,空閑位置越少,哈希沖突越劇烈。所以裝載因子不能太大,要及時擴容減小沖突,但是數組內存利用率較低。

看似開放尋址法有挺多問題,但是也有一些優點:

數據都存儲在數組中,可以有效地利用 CPU 緩存加快查詢速度。 而且,這種方法實現的哈希表,序列化也簡單,不像鏈表還要考慮指針。

總結而得,當數據量比較小、裝載因子小的時候,適合采用開放尋址法。這也是 Java 中??ThreadLocal???內部類??ThreadLocalMap??使用開放尋址法解決散列沖突的原因。

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62977
  • 哈希算法
    +關注

    關注

    1

    文章

    56

    瀏覽量

    10779
收藏 人收藏

    評論

    相關推薦

    MediaTek與知名游戲引擎開發商Cocos達成深度合作

    為帶給開發者和用戶智能互動新體驗, MediaTek 與知名游戲引擎開發商 Cocos 達成深度合作,將 MediaTek 端側生成式 AI 領域的前沿技術,與 Cocos 在
    的頭像 發表于 01-10 13:48 ?130次閱讀

    【RA-Eco-RA4E2-64PIN-V1.0開發板試用】RA4E2使用之SHA256加密解密

    和解密算法來進行解釋和說明數據加密和解密操作的。 SHA-256是一種哈希函數,屬于SHA-2(Secure Hash Algorithm 2)家族的一部分。它是由美國國家安全局(NSA)設計,并由
    發表于 12-23 18:18

    DFRobot參加2024開放原子開發者大會及開放原子開放硬件許可證發布儀式

    12月20日至21日,2024開放原子開發者大會暨首屆開源技術學術大會在湖北省武漢市東湖新技術開發區的光谷希爾頓酒店隆重舉行。此次大會以“一切為了
    的頭像 發表于 12-23 16:21 ?323次閱讀
    DFRobot參加2024<b class='flag-5'>開放</b>原子<b class='flag-5'>開發</b>者大會及<b class='flag-5'>開放</b>原子<b class='flag-5'>開放</b>硬件許可證發布儀式

    半導體與高通合作開發邊緣AI物聯網解決方案

    半導體(簡稱ST)與高通公司旗下子公司高通技術國際有限公司(簡稱QTI)宣布,雙方達成一項新的戰略協議,合作開發基于邊緣AI的下一代工業和消費物聯網解決方案。雙方將充分發揮互補優勢
    的頭像 發表于 10-12 11:25 ?596次閱讀

    寄存器間接尋址和寄存器尋址的區別

    寄存器間接尋址和寄存器尋址是計算機體系結構中兩種重要的尋址方式,它們在指令執行過程中起著關鍵作用。下面將從定義、原理、特點、應用場景以及區別等方面對這兩種尋址方式進行詳細闡述。
    的頭像 發表于 10-05 17:13 ?2114次閱讀

    PRU開發詳解

    電子發燒友網站提供《PRU開發詳解.pdf》資料免費下載
    發表于 09-05 11:27 ?0次下載
    PRU<b class='flag-5'>開發</b><b class='flag-5'>詳解</b>

    DDR4尋址原理詳解

    )的尋址原理是計算機內存系統中至關重要的一個環節,它決定了數據如何在內存中被有效地存儲和訪問。DDR4的尋址原理復雜而高效,以下將詳細闡述其關鍵要素和工作流程。
    的頭像 發表于 09-04 12:38 ?990次閱讀

    鴻蒙開發:Universal Keystore Kit 密鑰管理服務 HMAC ArkTS

    HMAC是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),是一種基于Hash函數和密鑰進行消息認證的方法。
    的頭像 發表于 07-12 18:22 ?700次閱讀

    Arm宣布專為移動游戲設計的圖形優化方案

    Arm 近期宣布了其專為移動游戲設計的圖形優化方案——Arm Accuracy Super Resolution(ASR),旨在顯著提升游戲畫面的視覺品質,同時有效控制智能手機的功耗。這一創新
    的頭像 發表于 07-12 15:58 ?457次閱讀

    寄存器尋址和直接尋址的區別

    寄存器尋址和直接尋址是計算機指令系統中的兩種基本尋址方式。它們在指令的執行過程中起著至關重要的作用,決定了指令操作數的來源和目標。下面我們將介紹這兩種尋址方式的特點、區別以及在實際應用
    的頭像 發表于 07-12 10:42 ?2412次閱讀

    鴻蒙開發:Universal Keystore Kit 密鑰管理服務 HMAC C、C++

    HMAC是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),是一種基于Hash函數和密鑰進行消息認證的方法。
    的頭像 發表于 07-12 09:36 ?374次閱讀

    游戲選天璣!聯發科天璣游戲技術推動游戲生態高速發展

    等生態合作伙伴,共同研討移動游戲領域的變革趨勢,并為解決當前移動游戲面臨的挑戰提供了星速引擎自適應軟件開發套件和硬件光線追蹤技術解決方案,不
    的頭像 發表于 05-07 14:21 ?594次閱讀
    玩<b class='flag-5'>游戲</b>選天璣!聯發科天璣<b class='flag-5'>游戲</b><b class='flag-5'>技術</b>推動<b class='flag-5'>游戲</b>生態高速發展

    STM32F439的HASH模塊DMA傳輸計算問題求解

    項目中需要使用439的的HASH模塊計算文件的MD5值,使用的DMA方式,為了提高CPU效率,讓其他任務在DMA傳輸數據、硬件計算MD5期間可以得到運行,DMA的數據來自FMC外擴的SDRAM
    發表于 04-19 06:42

    電纜故障尋址定位|高壓電纜故障及隱患監測方案|結構|雙端測距

    纜故障及隱患監測方案開發與應用顯得尤為重要。 ? ? ? 來了解電纜故障尋址定位技術。當電纜發生故障時,迅速準確地找出故障點位置是修復工作的前提。傳統的故障檢測方法主要依賴工作人員的
    的頭像 發表于 03-15 16:41 ?776次閱讀

    開放原子開源大賽—基于OpenHarmony的團結引擎應用開發賽正式啟動!

    “基于OpenHarmony的團結引擎應用開發賽”是開放原子全球開源大賽下開設的新興及應用賽的賽題之一,本次賽題旨在鼓勵更多開發者基于OpenHarmony 4.x版本,使用Unity中國團結引擎
    發表于 03-13 10:45
    亲朋棋牌刷金币| 百家乐官网网络游戏信誉怎么样 | 金鼎百家乐官网局部算牌法| 大发888娱乐游戏可以玩吗| 百家乐官网什么方法容易赢| 个旧市| 百家乐大| 天格数16土人格24火地格数19水| 百家乐官网对子赔率| 赌博百家乐的路单| 应用必备| 大发888下载英皇国际| 百家乐庄闲作千| 现场百家乐官网百家乐官网| 威尼斯人娱乐城存款多少起存 | 百家乐官网视频游戏帐号| 百家乐九| rmb百家乐官网的玩法技巧和规则 木星百家乐官网的玩法技巧和规则 | 百家乐官网筹码套装包邮| 东京太阳城王子大酒店| Bet百家乐官网娱乐城| 固始县| 百家乐博牌规| 百家乐实战技术| 澳门百家乐官网破解方法| 顶级赌场连环夺宝下注有什么窍门| 风水24山图| 百家乐官网庄河闲的赌法| 舟山星空棋牌游戏大厅下载| 网络百家乐金海岸破解软件| 百家乐官网长龙技巧| 莆田市| 太阳城现金| 真人百家乐赢钱| 百家乐官网长龙技巧| 网上百家乐官网骗人的| 星空棋牌舟山下载| 赌博百家乐的玩法技巧和规则 | 玩百家乐保时捷娱乐城| 百家乐官网的分析| 富民县|