www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]天天AC,日日驚喜。每天學(xué)點(diǎn)算法,每天進(jìn)步一點(diǎn)點(diǎn)。1.哈希表的定義 ? ? ? 散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵字(Key value)而直接訪問在內(nèi)存存儲(chǔ)位置的數(shù)據(jù)結(jié)構(gòu)。也

天天AC,日日驚喜。每天學(xué)點(diǎn)算法,每天進(jìn)步一點(diǎn)點(diǎn)。

1.哈希表的定義 ? ? ? 散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵字(Key value)而直接訪問在內(nèi)存存儲(chǔ)位置的數(shù)據(jù)結(jié)構(gòu)。也就是說,它通過把鍵值通過一個(gè)函數(shù)的計(jì)算,映射到表中一個(gè)位置來訪問記錄,這加快了查找速度。這個(gè)映射函數(shù)稱做散列函數(shù),存放記錄的數(shù)組稱做散列表。(維基)

? ? ? 個(gè)人的理解:舉個(gè)例子,你想去圖書館找本書,你不會(huì)從第一本找到最后一本,你會(huì)看下那本書是歸為小說類還是 IT 類,然后直接去那一類里面查找,哈希表就相當(dāng)于圖書的歸類。 ? ? ? 哈希表和數(shù)組的區(qū)別:可以想象一下,你通過數(shù)組下標(biāo)直接去找到數(shù)組的值,而哈希表是根據(jù)關(guān)鍵字 k ,計(jì)算 f(k)去找到值。 ? ? ? 哈希表結(jié)構(gòu)上介于鏈表和二叉樹之間,哈希表是一個(gè)固定大小的數(shù)組,數(shù)組的每個(gè)元素是一個(gè)鏈表(單向或雙向)的頭指針。如果Key一樣,則在一起,如果Key不一樣,則不在一起。哈希表的查詢是飛快的。因?yàn)樗恍枰獜念^搜索,它利用Key的“哈希算法”直接定位,查找非???,各種數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)基本都是它。但帶來的問題是,哈希表的尺寸、哈希算法。 若關(guān)鍵字為,則其值存放在的存儲(chǔ)位置上。由此,不需比較便可直接取得所查記錄。稱這個(gè)對應(yīng)關(guān)系為散列函數(shù)(Hash function),按這個(gè)思想建立的表為散列表。對不同的關(guān)鍵字可能得到同一散列地址,即,而,這種現(xiàn)象稱碰撞(Collision)。具有相同函數(shù)值的關(guān)鍵字對該散列函數(shù)來說稱做同義詞。綜上所述,根據(jù)散列函數(shù)和處理碰撞的方法將一組關(guān)鍵字映象到一個(gè)有限的連續(xù)的地址集(區(qū)間)上,并以關(guān)鍵字在地址集中的“象”作為記錄在表中的存儲(chǔ)位置,這種表便稱為散列表,這一映象過程稱為散列造表或散列,所得的存儲(chǔ)位置稱散列地址。若對于關(guān)鍵字集合中的任一個(gè)關(guān)鍵字,經(jīng)散列函數(shù)映象到地址集合中任何一個(gè)地址的概率是相等的,則稱此類散列函數(shù)為均勻散列函數(shù)(Uniform Hash function),這就是使關(guān)鍵字經(jīng)過散列函數(shù)得到一個(gè)“隨機(jī)的地址”,從而減少碰撞。2.構(gòu)造散列函數(shù)

散列函數(shù)能使對一個(gè)數(shù)據(jù)序列的訪問過程更加迅速有效,通過散列函數(shù),數(shù)據(jù)元素將被更快定位。

直接尋址法:取關(guān)鍵字或關(guān)鍵字的某個(gè)線性函數(shù)值為散列地址。即或,其中為常數(shù)(這種散列函數(shù)叫做自身函數(shù))數(shù)字分析法:假設(shè)關(guān)鍵字是以r為基的數(shù),并且哈希表中可能出現(xiàn)的關(guān)鍵字都是事先知道的,則可取關(guān)鍵字的若干數(shù)位組成哈希地址。平方取中法:取關(guān)鍵字平方后的中間幾位為哈希地址。通常在選定哈希函數(shù)時(shí)不一定能知道關(guān)鍵字的全部情況,取其中的哪幾位也不一定合適,而一個(gè)數(shù)平方后的中間幾位數(shù)和數(shù)的每一位都相關(guān),由此使隨機(jī)分布的關(guān)鍵字得到的哈希地址也是隨機(jī)的。取的位數(shù)由表長決定。折疊法:將關(guān)鍵字分割成位數(shù)相同的幾部分(最后一部分的位數(shù)可以不同),然后取這幾部分的疊加和(舍去進(jìn)位)作為哈希地址。隨機(jī)數(shù)法除留余數(shù)法:取關(guān)鍵字被某個(gè)不大于散列表表長m的數(shù)p除后所得的余數(shù)為散列地址。即,?。不僅可以對關(guān)鍵字直接取模,也可在折疊法、平方取中法等運(yùn)算之后取模。對p的選擇很重要,一般取素?cái)?shù)或m,若p選擇不好,容易產(chǎn)生碰撞。3.處理碰撞的方法 為了知道碰撞產(chǎn)生的相同散列函數(shù)地址所對應(yīng)的關(guān)鍵字,必須選用另外的散列函數(shù),或者對碰撞結(jié)果進(jìn)行處理。在算法導(dǎo)論里面介紹了三種方法:開放尋址,單獨(dú)鏈表,雙散列。

4.查找效率 數(shù)據(jù)本身分布是否均勻,還有就是散列表的載荷因子。散列表的載荷因子定義為:?= 填入表中的元素個(gè)數(shù) / 散列表的長度

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在本節(jié)中,我們將探究集成模式的數(shù)組,每個(gè)模式都是為了提供無縫集成解決方案而定制的。這些模式作為結(jié)構(gòu)化的框架,促進(jìn)了不同系統(tǒng)之間的聯(lián)系和數(shù)據(jù)交換。它們大致分為三類:

關(guān)鍵字: 數(shù)據(jù)整合 數(shù)據(jù)結(jié)構(gòu)

學(xué)習(xí)C語言是程序員的入門教育,但是在學(xué)習(xí)過程中,常常會(huì)遇到一些常見的誤區(qū)。這些誤區(qū)可能會(huì)讓學(xué)習(xí)者的學(xué)習(xí)經(jīng)驗(yàn)不佳,影響到他們掌握該語言的能力。

關(guān)鍵字: C語言 數(shù)據(jù)結(jié)構(gòu)

常用的數(shù)據(jù)結(jié)構(gòu)可根據(jù)數(shù)據(jù)訪問的特點(diǎn)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。線性結(jié)構(gòu)包括常見的鏈表、棧、隊(duì)列等,非線性結(jié)構(gòu)包括樹、圖等。

關(guān)鍵字: 數(shù)據(jù)結(jié)構(gòu) 非線性結(jié)構(gòu)

堆(heap)和棧(stack)是在計(jì)算機(jī)中常用的兩種數(shù)據(jù)結(jié)構(gòu)。它們具有不同的特點(diǎn)和用途,對于程序員來說,了解堆和棧的區(qū)別是非常重要的。

關(guān)鍵字: 內(nèi)存 數(shù)據(jù)結(jié)構(gòu)

南京2022年10月27日 /美通社/ -- 10月18日,由南瑞集團(tuán)主導(dǎo)編制的IEC國際標(biāo)準(zhǔn)《電動(dòng)汽車充電漫游服務(wù)信息交互 第2部分:用例》(IEC 63119-2:2022)正式發(fā)布。該標(biāo)準(zhǔn)的發(fā)布是南瑞集團(tuán)在國際電動(dòng)...

關(guān)鍵字: 電動(dòng)汽車充電 充電站 數(shù)據(jù)結(jié)構(gòu) 電動(dòng)汽車電池

大家都聽說過紅黑樹,也都知道紅黑樹很厲害,是計(jì)算機(jī)里面評價(jià)非常高的數(shù)據(jù)結(jié)構(gòu)。但是每當(dāng)想學(xué)習(xí)紅黑樹的時(shí)候,卻總是找不到通俗易懂很好理解的學(xué)習(xí)資料。很多書上上來就是紅黑樹的定義,然后就是紅黑樹的實(shí)現(xiàn),直接就把人給整暈了。光看...

關(guān)鍵字: 計(jì)算機(jī) 數(shù)據(jù)結(jié)構(gòu) 紅黑樹

(全球TMT2022年7月11日訊)7月7日,由徑碩科技(JINGdigital)主辦、MEC睿達(dá)會(huì)承辦的“萬數(shù)有靈·2022中國數(shù)字營銷創(chuàng)新增長峰會(huì)”在深圳舉行。作為一家營銷科技公司,徑碩科技提供的是一流的營銷軟件產(chǎn)...

關(guān)鍵字: CE DIGITAL 數(shù)字化 數(shù)據(jù)結(jié)構(gòu)

Redis為什么那么快?除了它是內(nèi)存數(shù)據(jù)庫,使得所有的操作都在內(nèi)存上進(jìn)行之外,還有一個(gè)重要因素,它實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),使得我們對數(shù)據(jù)進(jìn)行增刪查改操作時(shí),Redis能高效的處理。因此,這次我們就來好好聊一下Redis數(shù)據(jù)結(jié)構(gòu),...

關(guān)鍵字: 數(shù)據(jù)結(jié)構(gòu) REDIS 字符串 節(jié)點(diǎn)

哈嘍,大家好,我是瓜哥,致力于分享互聯(lián)網(wǎng)各領(lǐng)域干貨。前幾天,有人問瓜哥,學(xué)習(xí)編程語言有什么好的建議沒?今天簡單和大家分享幾點(diǎn)學(xué)習(xí)編程的建議,希望可以幫助到大家。1.只要開始,就不要怕晚瓜哥經(jīng)??吹竭@些問題,大四學(xué)編程還來...

關(guān)鍵字: 編程 代碼 基礎(chǔ)知識(shí) 數(shù)據(jù)結(jié)構(gòu)

模塊化是指解決一個(gè)復(fù)雜問題時(shí)自頂向下逐層把系統(tǒng)劃分成若干模塊的過程,有多種屬性,分別反映其內(nèi)部特性。

關(guān)鍵字: 模塊化 軟件模塊 數(shù)據(jù)結(jié)構(gòu)
關(guān)閉