閒來無事 想到的雜湊衝突了 解決方案

2022-05-07 10:48:09 字數 601 閱讀 3537

其實很簡單:

1、大前提是選擇雜湊結果平均分布的雜湊函式,這個有很多種方案,不是關鍵;

2、在儲存雜湊結果的時候,

2.1、如果當前位址沒有被占用,則直接存放值;

ps:上面所說的值 是乙個 結構體物件,這個結構體物件裡面即有key又有hash(key)和value,以下簡稱值;

3、這樣的話:當查詢的時候通過將key傳入hash函式的時候,得到雜湊之後的hashkey:

3.1、如果hashkey這個位址裡面儲存的是乙個值,那麼說明這個位置沒有雜湊衝突,直接取出值返回即可;

3.2.1、先找到這個指標對應的鍊錶,然後挨個遍歷鍊錶,檢視每乙個元素,檢視該元素的key是否和我所傳入的key相同:

3.2.1.1、如果相同則說明是我要找的那個值,查詢成功;

3.2.1.2、如果不同則繼續往後找,直到找到鍊錶最後都沒有我當前的key的話,則整個查詢失敗。

總結:1、雜湊衝突不可避免;

2、怎麼在衝突的時候還能知道是不是我要找的元素;

這裡最重要的是資料結構的時候,在儲存的時候同時存上value 和key,這樣的話,我就能夠在雜湊衝突的時候判斷是不是我要找的元素。

閒來無事,學學python

字串 單雙三引號,三引號負責多行字串 轉義 拼接 複製 start,end,step 切片 format 格式化,可通過name指定值 len 字串長度 strip lstrip rstrip 去掉空格 split seq,num 字串轉列表 replace s1,s2,num 字串替換 encod...

(閒來無事)棧的實現

對棧的理解記住 先進後出 就可以了,什麼意思呢?就是向桶裡放積木只能拿出最上層的積木,然後一層一層的拿出這樣理解的話就簡單了,只用乙個節點一直指向棧的最上層的節點就可以了。1.首先想構造的資料結構是什麼樣子的?需要儲存的資料有哪些?儲存的資料可以根據自己的需求去新增,在我設計的資料中只有乙個那就是i...

雜談 之 閒來無事 二

在分析推背圖之前,首先要了解一下基礎知識,這個後續分析中才會知道去 找,以及思路是什麼。12 3456 78910 ji y b ng d ng w j g ng x nr n gu 甲乙丙 丁戊己庚 辛壬癸顏色 青青赤赤 黃黃白白 黑黑五行木 木火火土 土金金水 水 其中甲 丙 戊 庚 壬為陽幹,...