查找技術(shù)

靜態(tài)表查找

只做查找操作的查找表應(yīng)用線性表結(jié)構(gòu)來(lái)組織數(shù)據(jù)膳凝,用順序查找算法艳汽。如果對(duì)主關(guān)鍵字排序赠法,可以折半查找等高效查找壶愤。

順序表查找(線性查找)

有序表查找

關(guān)鍵碼有序

折半查找(二分查找 Binary Search)

前提:關(guān)鍵碼有序淑倾,線性表順序存儲(chǔ)最壞查找 int(log2n)+1 次時(shí)間復(fù)雜度O(logn)不適用于頻繁執(zhí)行插入刪除的數(shù)據(jù)集mid = (low + high)/2 = low + 0.5(high - low)

差值查找

mid = low + (high - low) * (key - a[low]) / (a[high] - a[low])時(shí)間復(fù)雜度O(logn)對(duì)于關(guān)鍵字分布均勻的查找表來(lái)說(shuō),性能比折半查找好的多征椒。

斐波納挈查找

mid = low + F[k - 1] - 1時(shí)間復(fù)雜度O(logn)平均性能優(yōu)于折半查找娇哆。算法復(fù)雜度低

三種有序表的查找本質(zhì)上是分割點(diǎn)的選擇不同,各有優(yōu)劣勃救。

動(dòng)態(tài)表查找

可以進(jìn)行插入刪除的查找表

二叉排序樹(BST碍讨,二叉查找樹,二叉搜索樹)

中序遍歷時(shí)得到有序序列有利于插入刪除操作剪芥,插入刪除時(shí)無(wú)需移動(dòng)元素位置垄开。查找性能取決于二叉排序樹的深度(形狀)插入操作發(fā)生在葉子節(jié)點(diǎn)上。不平衡的二叉排序樹查找效率非常低税肪,因此溉躲,希望二叉排序樹是比較平衡的榜田,即深度與完全二叉樹相同(int(log2n)+1),查找的時(shí)間復(fù)雜度為O(logn)

平衡二叉樹(AVL樹)

每個(gè)節(jié)點(diǎn)的左子樹和右子樹高度差<=1平衡的二叉排序樹锻梳,查找箭券,插入,刪除疑枯,時(shí)間復(fù)雜度都是O(logn)

在元素非常多的時(shí)候辩块,要么使樹的度非常大,要么樹的高度非常大=》多路查找樹

多路查找樹

每個(gè)節(jié)點(diǎn)度>=2且每個(gè)節(jié)點(diǎn)可以存儲(chǔ)多個(gè)元素2-3樹荆永,2-3-4樹废亭,B樹,B+樹

2-3樹

  • 一個(gè)2節(jié)點(diǎn)包含一個(gè)元素和兩個(gè)孩子(或沒(méi)有孩子)具钥。2結(jié)點(diǎn)要么有兩個(gè)孩子豆村,要么沒(méi)有子節(jié)點(diǎn)。

  • 一個(gè)3節(jié)點(diǎn)包含一大一小兩個(gè)元素和三個(gè)子節(jié)點(diǎn)(或沒(méi)有孩子)骂删。

2-3-4樹

同2-3樹

B樹

B樹是一種平衡的多路查找樹2-3樹掌动,2-3-4樹都是B樹的特例
image

減少了必須訪問(wèn)節(jié)點(diǎn)和數(shù)據(jù)塊的數(shù)量,從而提高了性能宁玫。這種數(shù)據(jù)結(jié)構(gòu)是為了內(nèi)外存交互準(zhǔn)備的粗恢。

B+樹

遍歷更方便
image

散列表查找

不需要比較,直接通過(guò)關(guān)鍵字得到記錄在內(nèi)存中的存儲(chǔ)位置欧瘪。存儲(chǔ)位置 = f(關(guān)鍵字)f = 散列函數(shù) = 哈希函數(shù)時(shí)間復(fù)雜度:O(1)用統(tǒng)一函數(shù) f 算出地址再存儲(chǔ)眷射。散列技術(shù)既是一種存儲(chǔ)方法,又是一種查找方法佛掖。散列是面向查找的存儲(chǔ)結(jié)構(gòu)沖突: key1≠key2 , f(key1) = f(key2)

處理沖突的方法:

  • 開放定址法

  • 再散列函數(shù)法

  • 鏈地址法(平均查找性能較好)

  • 公共溢出區(qū)法

索引按照結(jié)構(gòu)可以分為線性索引凭迹、樹形索引、多級(jí)索引苦囱。

線性索引(索引表)

每個(gè)索引項(xiàng)至少包含一個(gè)關(guān)鍵字和對(duì)應(yīng)記錄在存儲(chǔ)器中的位置。查找快脾猛,插入刪除難

稠密索引

數(shù)據(jù)集中的每個(gè)記錄對(duì)應(yīng)一個(gè)索引項(xiàng)索引項(xiàng)是按照關(guān)鍵碼有序的排(意味著可以用有序表查找)空間代價(jià)大撕彤,不適用于非常大的數(shù)據(jù)集

分塊索引

塊間有序,塊內(nèi)無(wú)序每塊對(duì)應(yīng)一個(gè)索引項(xiàng)索引項(xiàng)結(jié)構(gòu):

  • 最大關(guān)鍵碼 存儲(chǔ)塊中最大關(guān)鍵字猛拴,使得它之后的下一塊的最小關(guān)鍵字也能比它大羹铅。

  • 存儲(chǔ)塊中的記錄個(gè)數(shù)(用于循環(huán))

  • 指向塊首數(shù)據(jù)元素的指針(用于開始進(jìn)行遍歷)

最佳情況下(分塊數(shù)=塊中記錄數(shù))平均查找長(zhǎng)度:n**0.5 +1總的來(lái)說(shuō),分塊索引兼顧了對(duì)細(xì)分塊不需要有序的情況下愉昆,大大增加了整體查找速度职员,普遍用于數(shù)據(jù)庫(kù)表查找等技術(shù)中。

倒排索引

廣泛用于搜索引擎中索引表中每一項(xiàng)都包括一個(gè)屬性值和具有該屬性值的各記錄的地址跛溉。源于實(shí)際應(yīng)用中需要根據(jù)屬性(或字段焊切、次關(guān)鍵碼)的值來(lái)確定記錄位置扮授,查找記錄。而不是由記錄確定屬性值专肪。查找速度非成膊快

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嚎尤,隨后出現(xiàn)的幾起案子荔仁,更是在濱河造成了極大的恐慌,老刑警劉巖芽死,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乏梁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡关贵,警方通過(guò)查閱死者的電腦和手機(jī)遇骑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)坪哄,“玉大人质蕉,你說(shuō)我怎么就攤上這事◆婕。” “怎么了模暗?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)念祭。 經(jīng)常有香客問(wèn)我兑宇,道長(zhǎng),這世上最難降的妖魔是什么粱坤? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任隶糕,我火速辦了婚禮,結(jié)果婚禮上站玄,老公的妹妹穿的比我還像新娘枚驻。我一直安慰自己,他們只是感情好株旷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布再登。 她就那樣靜靜地躺著,像睡著了一般晾剖。 火紅的嫁衣襯著肌膚如雪锉矢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天齿尽,我揣著相機(jī)與錄音沽损,去河邊找鬼。 笑死循头,一個(gè)胖子當(dāng)著我的面吹牛绵估,可吹牛的內(nèi)容都是我干的炎疆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼壹士,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼磷雇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起躏救,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤唯笙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盒使,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崩掘,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年少办,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苞慢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡英妓,死狀恐怖挽放,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔓纠,我是刑警寧澤辑畦,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腿倚,受9級(jí)特大地震影響纯出,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敷燎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一暂筝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硬贯,春花似錦焕襟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至墨状,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菲饼,已是汗流浹背肾砂。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宏悦,地道東北人镐确。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓包吝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親源葫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诗越,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 查找是在大量的信息中尋找一個(gè)特定的信息元素,在計(jì)算機(jī)應(yīng)用中息堂,查找是常用的基本運(yùn)算嚷狞,例如編譯程序中符號(hào)表的查找。本文...
    北方蜘蛛閱讀 2,891評(píng)論 1 4
  • 原文出處:http://www.cnblogs.com/maybe2030/p/4715035.html引文出處:...
    明教de教主閱讀 9,181評(píng)論 0 7
  • 目錄 [1. 順序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 樹表查找][6. 分塊查...
    jiangmo閱讀 17,662評(píng)論 4 6
  • 一荣堰、相關(guān)定義 查找——查找就是根據(jù)給定的某個(gè)值床未,在查找表中確定一個(gè)其關(guān)鍵字等于給定值的數(shù)據(jù)元素(或記錄)。所有這些...
    開心糖果的夏天閱讀 1,130評(píng)論 0 8
  • 首先要搞明白一個(gè)問(wèn)題振坚,讀書的結(jié)果一定好嗎薇搁? 中國(guó)有句話叫做“書呆子”,意思是死讀書而不懂變通的人渡八。還有句話是:盡信...
    大張冰閱讀 192評(píng)論 1 4