東坡下載:內(nèi)容最豐富最安全的下載站!文件類型庫|論壇轉(zhuǎn)帖|最新更新|下載分類

首頁教育素材書集教程 → 大話數(shù)據(jù)結(jié)構(gòu) epub高清電子版【完整免費(fèi)版】

大話數(shù)據(jù)結(jié)構(gòu)epub高清電子版【完整免費(fèi)版】

  • 大。11.5M
  • 類型:書集教程
  • 網(wǎng)站:http://sfsensi.com
  • 廠商:
  • 授權(quán):免費(fèi)軟件
  • 等級:
  • 產(chǎn)地:國產(chǎn)軟件
  • 語言:中文
  • 平臺:WinAll
  • 更新:2015-06-12
好用好玩 50%(0)
坑爹 坑爹 50%(0)

大話數(shù)據(jù)結(jié)構(gòu)介紹

正如作者的期待,大話數(shù)據(jù)結(jié)構(gòu)這本書是真正的數(shù)據(jù)結(jié)構(gòu)的自學(xué)和入門讀物,它生動和淺顯地介紹了數(shù)據(jù)結(jié)構(gòu)的許多相關(guān)基本概念和一些經(jīng)典的算法。該書內(nèi)容循序漸進(jìn),由淺入深,從簡單到復(fù)雜。從最容易的線性表開始講起,然后逐漸的講樹,到最后講圖。而每個數(shù)據(jù)結(jié)構(gòu)里面細(xì)分也是按照從簡單到復(fù)雜的順序講的。本節(jié)內(nèi)容小編為大家整理帶來的是一份epub格式高清電子版大話數(shù)據(jù)結(jié)構(gòu),該電子書共有446頁,書籍內(nèi)容完整詳細(xì),需要查閱的朋友點(diǎn)擊本文相應(yīng)的下載地址即可進(jìn)行下載查閱哦!

大話數(shù)據(jù)結(jié)構(gòu)目錄

第1章數(shù)據(jù)結(jié)構(gòu)緒論 1

1.1開場白 2

如果你交給某人一個程序,你將折磨他一整天;如果你教某人如何編寫程序,你將折磨他一輩子。

1.2你數(shù)據(jù)結(jié)構(gòu)怎么學(xué)的? 3

他完成開發(fā)并測試通過后,得意地提交了代碼。項目經(jīng)理看完代碼后拍著桌子對他說:“你數(shù)據(jù)結(jié)構(gòu)是怎么學(xué)的?”

1.3數(shù)據(jù)結(jié)構(gòu)起源 4

1.4基本概念和術(shù)語 5

正所謂“巧婦難為無米之炊”,再強(qiáng)大的計算機(jī),也要有“米”下鍋才可以干活,否則就是一堆破銅爛鐵。這個“米”就是數(shù)據(jù)。

1.4.1數(shù)據(jù) 5

1.4.2數(shù)據(jù)元素 5

1.4.3數(shù)據(jù)項 6

1.4.4數(shù)據(jù)對象 6

1.4.5數(shù)據(jù)結(jié)構(gòu) 6

1.5邏輯結(jié)構(gòu)與物理結(jié)構(gòu) 7

1.5.1邏輯結(jié)構(gòu) 7

1.5.2物理結(jié)構(gòu) 9

1.6抽象數(shù)據(jù)類型 11

大家都需要房子住,但顯然沒錢考慮大房子是沒有意義的。于是商品房就出現(xiàn)了各種各樣的戶型,有幾百平米的別墅,也有僅兩平米的膠囊公寓……

1.6.1數(shù)據(jù)類型 11

.1.6.2抽象數(shù)據(jù)類型 12

1.7總結(jié)回顧 14

1.8結(jié)尾語 15

最終的結(jié)果一定是,你對著別人很牛的說“數(shù)據(jù)結(jié)構(gòu)——就那么回事!

第2章算法 17

2.1開場白 18

2.2數(shù)據(jù)結(jié)構(gòu)與算法關(guān)系 18

計算機(jī)界的前輩們,是一幫很牛很牛的人,他們使得很多看似沒法解決或者很難解決的問題,變得如此美妙和神奇。

2.3兩種算法的比較 19

高斯在上小學(xué)的一天,老師要求每個學(xué)生都計算1+2+…+100的結(jié)果,誰先算出來誰先回家……

2.4算法定義 20

現(xiàn)實世界中的算法千變?nèi)f化,沒有通用算法可以解決所有問題。甚至一個小問題,某個解決此類問題很優(yōu)秀的算法卻未必就適合它。

2.5算法的特性 21

2.5.1輸入輸出 21

2.5.2有窮性 21

2.5.3確定性 21

2.5.4可行性 21

2.6算法設(shè)計的要求 22

求100個人的高考成績平均分與求全省所有考生的成績平均分在占用時間和內(nèi)存存儲上有非常大的差異,我們自然追求高效率和低存儲的算法來解決問題。

2.6.1正確性 22

2.6.2可讀性 23

2.6.3健壯性 23

2.6.4時間效率高和存儲量低 23

2.7算法效率的度量方法 24

隨著n值越來越大,它們在時間效率上的差異也就越來越大。好比有些人每天都在學(xué)習(xí),而另一些人,打打游戲、睡睡大覺,畢業(yè)后前者名企爭著要,后者求職處處無門。

2.7.1事后統(tǒng)計方法 24

2.7.2事前分析估算方法 25

2.8函數(shù)的漸近增長 27

2.9算法時間復(fù)雜度 29

理解大o推導(dǎo)不算難,難的其實是對數(shù)列的一些相關(guān)運(yùn)算,這考察的更多的是數(shù)學(xué)知識和能力。

2.9.1算法時間復(fù)雜度定義 29

2.9.2推導(dǎo)大o階方法 30

2.9.3常數(shù)階 30

2.9.4線性階 31

2.9.5對數(shù)階 32

2.9.6平方階 32

2.10常見的時間復(fù)雜度 35

有些時候,告訴你某些東西不可以去嘗試,也是一種知識的傳遞。總不能非要去被毒蛇咬一口才知道蛇不可以去招惹吧。

2.11最壞情況與平均情況 35

2.12算法空間復(fù)雜度 36

事先建立一個有2050大的數(shù)組,然后把所有年份按下標(biāo)數(shù)字對應(yīng),如果是閏年,此數(shù)組項的值就是1,如果不是就是0。這樣,所謂的判斷某一年是否是閏年就變成了查找這個數(shù)組的某一項的值是多少的問題。

2.13總結(jié)回顧 37

2.14結(jié)尾語 38

愚公移山固然可敬,但發(fā)明炸藥和推土機(jī),可能更加實在和聰明。

第3章線性表 41

3.1開場白 42

門外家長都擠在大門口與門里的小孩子的井然有序,形成了鮮明對比。哎,有時大人的所作所為,其實還不如孩子。

3.2線性表的定義 42

3.3線性表的抽象數(shù)據(jù)類型 45

有時我們想知道某個小朋友(比如麥兜)是否是班級的同學(xué),老師會告訴我說,沒有,麥兜是在春田花花幼兒園里。這種查找某個元素是否存在的操作很常用。

3.4線性表的順序存儲結(jié)構(gòu) 47

他每次一吃完早飯就沖著去了圖書館,挑一個好地兒,把他書包里的書,一本一本的按座位放好,長長一排,九個座硬是被他占了。

3.4.1順序存儲定義 47

3.4.2順序存儲方式 47

3.4.3數(shù)據(jù)長度與線性表長度區(qū)別 48

3.4.4地址計算方法 49

3.5順序存儲結(jié)構(gòu)的插入與刪除 50

春運(yùn)時去買火車票,大家都排隊排著好好的,這時來了一個美女:“可否讓我排在你前面?”這可不得了,后面的人像蠕蟲一樣,全部都得退后一步。

3.5.1獲得元素操作 50

3.5.2插入操作 51

3.5.3刪除操作 52

3.5.4線性表順序存儲結(jié)構(gòu)的優(yōu)缺點(diǎn) 54

3.6線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu) 55

反正也是要讓相鄰元素間留有足夠余地,那干脆所有元素都不要考慮相鄰位置了,哪有空位就到哪里。而只是讓每個元素知道它下一個元素的位置在哪里。

3.6.1順序存儲結(jié)構(gòu)不足的解決

辦法 55

3.6.2線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)定義 56

3.6.3頭指針與頭結(jié)點(diǎn)的異同 58

3.6.4線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)代碼描述 58

3.7單鏈表的讀取 60

3.8單鏈表的插入與刪除 61

本來是爸爸左牽著媽媽的手、右牽著寶寶的手在馬路邊散步。突然迎面走來一美女,爸爸失神般地望著,此情景被媽媽逮個正著,于是扯開父子倆,拉起寶寶的左手就快步朝前走去。

3.8.1單鏈表的插入 61

3.8.2單鏈表的刪除 64

3.9單鏈表的整表創(chuàng)建 66

3.10單鏈表的整表刪除 69

3.11單鏈表結(jié)構(gòu)與順序存儲結(jié)構(gòu)優(yōu)缺點(diǎn) 70

3.12靜態(tài)鏈表 71

對于一些語言,如basic、fortran等早期的編程高級語言,由于沒有指針,這鏈表結(jié)構(gòu),按照前面我們的講法,它就沒法實現(xiàn)了。怎么辦呢?

3.12.1靜態(tài)鏈表的插入操作 73

3.12.2靜態(tài)鏈表的刪除操作 75

3.12.3靜態(tài)鏈表優(yōu)缺點(diǎn) 77

3.13循環(huán)鏈表 78

這個輪回的思想很有意思。它強(qiáng)調(diào)了不管你今生是窮是富,如果持續(xù)行善積德,下輩子就會好過,反之就會遭到報應(yīng)。

3.14雙向鏈表 81

就像每個人的人生一樣,欲收獲就得付代價。雙向鏈表既然是比單鏈表多了如可以反向遍歷查找等的數(shù)據(jù)結(jié)構(gòu),那么也就需要付出一些小的代價。

3.15總結(jié)回顧 84

3.16結(jié)尾語 85

如果你覺得上學(xué)讀書是受罪,假設(shè)你可以活到80歲,其實你最多也就吃了20年苦。用人生四分之一的時間來換取其余時間的幸福生活,這點(diǎn)苦不算啥。

第4章棧與隊列 87

4.1開場白 88

想想看,在你準(zhǔn)備用槍的時候,突然這手槍明明有子彈卻打不出來,這不是要命嗎。

4.2棧的定義 89

類似的很多軟件,比如word、photoshop等,都有撤消(undo)的操作,也是用棧這種思想方式來實現(xiàn)的。

4.2.1棧的定義 89

4.2.2進(jìn)棧出棧變化形式 90

4.3棧的抽象數(shù)據(jù)類型 91

4.4棧的順序存儲結(jié)構(gòu)及實現(xiàn) 92

4.4.1棧的順序存儲結(jié)構(gòu) 92

4.4.2棧的順序存儲結(jié)構(gòu)進(jìn)棧操作 93

4.4.3棧的順序存儲結(jié)構(gòu)出棧操作 94

4.5兩棧共享空間 94

兩個大學(xué)室友畢業(yè)同時到北京工作,他們都希望租房時能找到獨(dú)自住的一室戶或一室一廳,可找來找去發(fā)現(xiàn),實在是承受不起。

4.6棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)及實現(xiàn) 97

4.6.1棧的鏈?zhǔn)酱鎯Y(jié)構(gòu) 97

4.6.2棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)進(jìn)棧操作 98

4.6.3棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)出棧操作 99

4.7棧的作用 100

4.8棧的應(yīng)用——遞歸 100

當(dāng)你往鏡子前面一站,鏡子里面就有一個你的像。但你試過兩面鏡子一起照嗎?如果a、b兩面鏡子相互面對面放著,你往中間一站,嘿,兩面鏡子里都有你的千百個“化身”。

4.8.1斐波那契數(shù)列實現(xiàn) 101

4.8.2遞歸定義 103

4.9棧的應(yīng)用——四則運(yùn)算表達(dá)式求值 104

4.9.1后綴(逆波蘭)表示法定義 104

4.9.2后綴表達(dá)式計算結(jié)果 106

4.9.3中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式 108

4.10隊列的定義 111

電腦有時會處于疑似死機(jī)的狀態(tài)。就當(dāng)你失去耐心,打算了reset時。突然它像酒醒了一樣,把你剛才點(diǎn)擊的所有操作全部都按順序執(zhí)行了一遍。

4.11隊列的抽象數(shù)據(jù)類型 112

4.12循環(huán)隊列 113

你上了公交車發(fā)現(xiàn)前排有兩個空座位,而后排所有座位都已經(jīng)坐滿,你會怎么做?立馬下車,并對自己說,后面沒座了,我等下一輛?沒這么笨的人,前面有座位,當(dāng)然也是可以坐的。

4.12.1隊列順序存儲的不足 112

4.12.2循環(huán)隊列定義 114

4.13隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)及實現(xiàn) 117

4.13.1隊列鏈?zhǔn)酱鎯Y(jié)構(gòu)入隊操作118

4.13.2隊列鏈?zhǔn)酱鎯Y(jié)構(gòu)出隊操作 119

4.14總結(jié)回顧 120

4.15結(jié)尾語 121

人生,需要有隊列精神的體現(xiàn)。南極到北極,不過是南緯90度到北緯90度的隊列,如果你中途猶豫,臨時轉(zhuǎn)向,也許你就只能和企鵝相伴永遠(yuǎn)?墒聦嵣希瑹o論哪個方向,只要你堅持到底,你都可以到達(dá)終點(diǎn)。

第5章串 123

5.1開場白 124

“枯眼望遙山隔水,往來曾見幾心知?壺空怕酌一杯酒,筆下難成和韻詩。途路阻人離別久,訊音無雁寄回遲。孤燈夜守長寥寂,夫憶妻兮父憶兒!薄稍僮屑(xì)一讀發(fā)現(xiàn),這首詩竟然可以倒過來讀。

5.2串的定義 124

我所提到的“over”、“end”、“l(fā)ie”其實就是“l(fā)over”、“friend”、“believe”這些單詞字符串的子串。

5.3串的比較 126

5.4串的抽象數(shù)據(jù)類型 127

5.5串的存儲結(jié)構(gòu) 128

感情上發(fā)生了問題,為了向女友解釋一下,我準(zhǔn)備發(fā)一條短信,一共打了75個字。最后八個字是“我恨你是不可能的”,點(diǎn)發(fā)送。后來得知對方收到的,只有70個字,短信結(jié)尾是“……我恨你”。

5.5.1串的順序存儲結(jié)構(gòu) 129

5.5.2串的鏈?zhǔn)酱鎯Y(jié)構(gòu) 131

5.6樸素的模式匹配算法 131

主串為s=”00000000000000000000000000000000000000000000000001”,而要匹配的子串為t=”0000000001”,……在匹配時,每次都得將t中字符循環(huán)到最后一位才發(fā)現(xiàn),哦,原來它們是不匹配的。

5.7kmp模式匹配算法 135

很多年前我們的科學(xué)家覺得像這種有多個0和1重復(fù)字符的字符串,卻需要挨個遍歷的算法,是非常糟糕的事情。

5.7.1kmp模式匹配算法原理 135

5.7.2next數(shù)組值推導(dǎo) 139

5.7.3kmp模式匹配算法實現(xiàn) 141

5.7.4kmp模式匹配算法改進(jìn) 142

5.7.5nextval數(shù)組值推導(dǎo) 144

5.8總結(jié)回顧 146

5.9結(jié)尾語 146

《璇璣圖》共八百四十字,縱橫各二十九字,縱、橫、斜、交互、正、反讀或退一字、迭一字讀均可成詩,詩有三、四、五、六、七言不等,目前有人統(tǒng)計可組成七千九百五十八首詩。聽清楚哦,是7958首。

第6章樹 149

6.1開場白 150

無論多高多大的樹,那也是從小到大的,由根到葉,一點(diǎn)點(diǎn)成長起來的。俗話說十年樹木,百年樹人,可一棵大樹又何止是十年這樣容易。

6.2樹的定義 150

樹的定義其實就是我們在講解棧時提到的遞歸的方法。也就是在樹的定義之中還用到了樹的概念,這是比較新的一種定義方法。

6.2.1結(jié)點(diǎn)分類 152

6.2.2結(jié)點(diǎn)間關(guān)系 152

6.2.3樹的其他相關(guān)概念 153

6.3樹的抽象數(shù)據(jù)類型 154

6.4樹的存儲結(jié)構(gòu) 155

6.4.1雙親表示法 155

6.4.2孩子表示法 158

6.4.3孩子兄弟表示法 162

6.5二叉樹的定義 163

蘇東坡曾說:“人有悲歡離合,月有陰晴圓缺,此事古難全”。意思就是完美是理想,不完美才是人生。我們通常舉的例子也都是左高右低、參差不齊的二叉樹。那是否存在完美的二叉樹呢?

6.5.1二叉樹特點(diǎn) 164

6.5.2特殊二叉樹 166

6.6二叉樹的性質(zhì) 169

6.6.1二叉樹性質(zhì)1 169

6.6.2二叉樹性質(zhì)2 169

6.6.3二叉樹性質(zhì)3 169

6.6.4二叉樹性質(zhì)4 170

6.6.5二叉樹性質(zhì)5 171

6.7二叉樹的存儲結(jié)構(gòu) 172

6.7.1二叉樹順序存儲結(jié)構(gòu) 172

6.7.2二叉鏈表 173

6.8遍歷二叉樹 174

你人生的道路上,高考填志愿要面臨哪個城市、哪所大學(xué)、具體專業(yè)等選擇,由于選擇方式的不同,遍歷的次序就完全不同。

6.8.1二叉樹遍歷原理 174

6.8.2二叉樹遍歷方法 175

6.8.3前序遍歷算法 178

6.8.4中序遍歷算法 181

6.8.5后序遍歷算法 184

6.8.6推導(dǎo)遍歷結(jié)果 184

6.9二叉樹的建立 187

6.10線索二叉樹 188

我們現(xiàn)在提倡節(jié)約型社會,一切都應(yīng)該節(jié)約為本。對待我們的程序當(dāng)然也不例外,能不浪費(fèi)的時間或空間,都應(yīng)該考慮節(jié)省。

6.10.1線索二叉樹原理 188

6.10.2線索二叉樹結(jié)構(gòu)實現(xiàn) 191

6.11樹、森林與二叉樹的轉(zhuǎn)換 195

有個鄉(xiāng)鎮(zhèn)企業(yè)也買了同樣的生產(chǎn)線,老板發(fā)現(xiàn)這個問題后找了個小工來說:你必須搞定,不然炒你魷魚。小工很快想出了辦法:他在生產(chǎn)線旁邊放了臺風(fēng)扇猛吹,空皂盒自然會被吹走。

6.11.1樹轉(zhuǎn)換為二叉樹 196

6.11.2森林轉(zhuǎn)換為二叉樹 197

6.11.3二叉樹轉(zhuǎn)換為樹 197

6.11.4二叉樹轉(zhuǎn)換為森林 199

6.11.5樹與森林的遍歷 199

6.12赫夫曼樹及其應(yīng)用 200

壓縮而不出錯是如何做到的呢?簡單的說,就是把我們要壓縮的文本進(jìn)行重新編碼,以達(dá)到減少不必要的空間的技術(shù)。壓縮和解壓縮技術(shù)就是基于赫夫曼的研究之上發(fā)展而來,我們應(yīng)該記住他。

6.12.1赫夫曼樹 200

6.12.2赫夫曼樹定義與原理 203

6.12.3赫夫曼編碼 205

6.13總結(jié)回顧 208

6.14結(jié)尾語 209

人受傷時會流下淚水。樹受傷時,天將再不會哭。希望我們的未來不要僅僅是鋼筋水泥建造的高樓,也要有那郁郁蔥蔥的森林和草地,我們?nèi)祟惒趴赡芘c自然和諧共處。

第7章圖 211

7.1開場白 212

如果你不善于規(guī)劃,很有可能就會出現(xiàn)如玩好新疆后到海南,然后再沖向黑龍江這樣的荒唐決策。

7.2圖的定義 213

現(xiàn)實中,人與人之間關(guān)系就非常復(fù)雜,比如我的認(rèn)識的朋友,可能他們之間也互相認(rèn)識,這就不是簡單的一對一、一對多的關(guān)系了,那就是我們今天要研究的主題——圖。

7.2.1各種圖定義 214

7.2.2圖的頂點(diǎn)與邊間關(guān)系 217

7.2.3連通圖相關(guān)術(shù)語 219

7.2.4圖的定義與術(shù)語總結(jié) 222

7.3圖的抽象數(shù)據(jù)類型 222

7.4圖的存儲結(jié)構(gòu) 223

因為美國的黑夜就是中國的白天,利用互聯(lián)網(wǎng),他的員工白天上班就可以監(jiān)控到美國倉庫夜間的實際情況,如果發(fā)生了像火災(zāi)、偷盜這樣的突發(fā)事件,及時電話到美國當(dāng)?shù)叵嚓P(guān)人員處理

7.4.1鄰接矩陣 224

7.4.2鄰接表 228

7.4.3十字鏈表 232

7.4.4鄰接多重表 234

7.4.5邊集數(shù)組 236

7.5圖的遍歷 237

我有一天早晨準(zhǔn)備出門,發(fā)現(xiàn)鑰匙不見了。一定是我兒子拿著玩,不知道丟到哪個犄角旮旯去了,你們說,我應(yīng)該如何找?

7.5.1深度優(yōu)先遍歷 238

7.5.2廣度優(yōu)先遍歷 242

7.6最小生成樹 245

如果你加班加點(diǎn),沒日沒夜設(shè)計出的結(jié)果是方案一,我想你離被炒魷魚應(yīng)該是不遠(yuǎn)了(同學(xué)微笑)。因為這個方案比后兩個方案一半還多的成本會讓老板氣暈過去的。

7.6.1普里姆(prim)算法 247

7.6.2克魯斯卡爾(kruskal)算法 251

7.7最短路徑 257

有人為了省錢,需路程最短,但換乘站間距離長等原因并不省時間;另一些人,他為趕時間,最大的需求是總時間要短;還有一類人,他們都不想多走路,關(guān)鍵是換乘要少,這樣可以在車上好好休息一下。

7.7.1迪杰斯特拉(dijkstra)算法 259

7.7.3弗洛伊德(floyd)算法 265

7.8拓?fù)渑判?270

電影制作不可能在人員到位進(jìn)駐場地時,導(dǎo)演還沒有找到,也不可能在拍攝過程中,場地都沒有。這都會導(dǎo)致荒謬的結(jié)果。

7.8.1拓?fù)渑判蚪榻B 271

7.8.2拓?fù)渑判蛩惴?272

7.9關(guān)鍵路徑 277

假如造一個輪子要0.5天、造一個發(fā)動機(jī)要3天、造一個車底盤要2天、造一個外殼要2天,其它零部件2天,全部零部件集中到一處要0.5天,組裝成車要2天,請問,在汽車廠造一輛車,最短需要多少天呢?

7.9.1關(guān)鍵路徑算法原理 279

7.9.2關(guān)鍵路徑算法 280

7.10總結(jié)回顧 287

7.11結(jié)尾語 289

世界上最遙遠(yuǎn)的距離,不是牛a與牛c之間狹小空隙,而是你們當(dāng)中,有人在通往牛逼的路上一路狂奔,而有人步入大學(xué)校園就學(xué)會放棄。

第8章查找 291

8.1開場白 292

當(dāng)你精心寫了一篇博文或者上傳一組照片到互聯(lián)網(wǎng)上,來自世界各地的無數(shù)“蜘蛛”便會蜂擁而至。所謂蜘蛛就是搜索引擎公司服務(wù)器上軟件,它把互聯(lián)網(wǎng)當(dāng)成了蜘蛛網(wǎng),沒日沒夜的訪問上面的各種信息。

8.2查找概論 293

比如網(wǎng)絡(luò)時代的新名詞,如“蝸居”、“蟻族”等,如果需要將它們收錄到漢語詞典中,顯然收錄時就需要查找它們是否存在,以及找到如果不存在時應(yīng)該收錄的位置。

8.3順序表查找 295

8.3.1順序表查找算法 296

8.3.2順序表查找優(yōu)化 297

8.4有序表查找 298

我在紙上已經(jīng)寫好了一個100以內(nèi)的正整數(shù)請你猜,問幾次可以猜出來。當(dāng)時已經(jīng)介紹了如何才可以最快的猜出這個數(shù)字。我們把這種每次取中間記錄查找的方法叫做折半查找。

8.4.1折半查找 298

8.4.2插值查找 301

8.4.3斐波那契查找 302

8.5線性索引查找 306

我母親年紀(jì)大了,經(jīng)常在家里找不到東西,于是她用一小本子,記錄了家里所有小東西放置的位置,比如戶口本放在右手床頭柜下面抽屜中,鈔票放在衣……咳,這個就不提了。

8.5.1稠密索引 307

8.5.2分塊索引 308

8.5.3倒排索引 311

8.6二叉排序樹 313

后來老虎來了,一人拼命地跑,另一人則急中生智,爬到了樹上。而老虎是不會爬樹的,結(jié)果……。爬樹者改變了跑的思想,這一改變何等重要,撿回了自己的一條命。

8.6.1二叉排序樹查找操作 316

8.6.2二叉排序樹插入操作 318

8.6.3二叉排序樹刪除操作 320

8.6.4二叉排序樹總結(jié) 327

8.7平衡二叉樹(avl樹) 328

平板就是一個世界,當(dāng)誘惑降臨,人心中的平衡被打破,世界就會混亂,最后留下的只有孤獨(dú)寂寞失敗。這種單調(diào)的機(jī)械化的社會,禁不住誘惑的侵蝕,最容易被侵蝕的,恰恰是最空虛的心靈。

8.7.1平衡二叉樹實現(xiàn)原理 330

8.7.2平衡二叉樹實現(xiàn)算法 334

8.8多路查找樹(b樹) 341

要觀察一個公司是否嚴(yán)謹(jǐn),看他們?nèi)绾伍_會就知道了。如果開會時每一個人都只是帶一張嘴,即興發(fā)言,這肯定是一家不嚴(yán)謹(jǐn)?shù)墓尽?/p>

8.8.12-3樹 343

8.8.22-3-4樹 348

8.8.3b樹 349

8.8.4b+樹 351

8.9散列表查找(哈希表)概述 353

你很想學(xué)太極拳,聽說學(xué)校有個叫張三豐的人打得特別好,于是到學(xué)校學(xué)生處找人,工作人員拿出學(xué)生名單,最終告訴你,學(xué)校沒這個人,并說張三豐幾百年前就已經(jīng)在武當(dāng)山作古了。

8.9.1散列表查找定義 354

8.9.2散列表查找步驟 355

8.10散列函數(shù)的構(gòu)造方法 356

8.10.1直接定址法 357

8.10.2數(shù)字分析法 358

8.10.3平方取中法 359

8.10.4折疊法 359

8.10.5除留余數(shù)法 359

8.10.6隨機(jī)數(shù)法 360

8.11處理散列沖突的方法 360

我們每個人都希望身體健康,雖然疾病可以預(yù)防,但不可避免,沒有任何人可以說,生下來到現(xiàn)在沒有生過一次病。

8.11.1開放定址法 361

8.11.2再散列函數(shù)法 363

8.11.3鏈地址法 363

8.11.4公共溢出區(qū)法 364

8.12散列表查找實現(xiàn) 365

8.12.1散列表查找算法實現(xiàn) 365

8.12.2散列表查找性能分析 367

8.13總結(jié)回顧 368

8.14結(jié)尾語 369

如果我是個喜歡汽車的人,時常搜汽車信息。那么當(dāng)我在搜索框中輸入“甲殼蟲”、“美洲虎”等關(guān)鍵詞時,不要讓動物和人物成為搜索的頭條。

第9章排序 373

9.1開場白 374

假如我想買一臺iphone4的手機(jī),于是上了某電子商務(wù)網(wǎng)站去搜索?伤阉骱蟀l(fā)現(xiàn),有8863個相關(guān)的物品,如此之多,這叫我如何選擇。我其實是想買便宜一點(diǎn)的,但是又怕遇到騙子,想找信譽(yù)好的商家,如何做?

9.2排序的基本概念與分類 375

比如我們某些大學(xué)為了選拔在主科上更優(yōu)秀的學(xué)生,要求對所有學(xué)生的所有科目總分倒序排名,并且在同樣總分的情況下將語數(shù)外總分做倒序排名。這就是對總分和語數(shù)外總分兩個次關(guān)鍵字的組合排序。

9.2.1排序的穩(wěn)定性 376

9.2.2內(nèi)排序與外排序 377

9.2.3排序用到的結(jié)構(gòu)與函數(shù) 378

9.3冒泡排序 378

無論你學(xué)習(xí)哪種編程語言,在學(xué)到循環(huán)和數(shù)組時,通常都會介紹一種排序算法,而這個算法一般就是冒泡排序。并不是它的名稱很好聽,而是說這個算法的思路最簡單,最容易理解。

9.3.1最簡單排序?qū)崿F(xiàn) 379

9.3.2冒泡排序算法 380

9.3.3冒泡排序優(yōu)化 382

9.3.4冒泡排序復(fù)雜度分析 383

9.4簡單選擇排序 384

還有一種做股票的人,他們很少出手,只是在不斷觀察和判斷,等時機(jī)一到,果斷買進(jìn)或賣出。他們因為冷靜和沉著,以及交易的次數(shù)少,而最終收益頗豐。

9.4.1簡單選擇排序算法 384

9.4.2簡單選擇排序復(fù)雜度分析 385

9.5直接插入排序 386

哪怕你是第一次玩撲克牌,只要認(rèn)識這些數(shù)字,理牌的方法都是不用教的。將3和4移動到5的左側(cè),再將2移動到最左側(cè),順序就算是理好了。這里,我們的理牌方法,就是直接插入排序法。

9.5.1直接插入排序算法 386

9.5.2直接插入排序復(fù)雜度分析 388

9.6希爾排序 389

不管怎么說,希爾排序算法的發(fā)明,使得我們終于突破了慢速排序的時代(超越了時間復(fù)雜度為o(n2)),之后,更為高效的排序算法也就相繼出現(xiàn)了。

9.6.1希爾排序原理 391

9.6.2希爾排序算法 391

9.6.3希爾排序復(fù)雜度分析 395

9.7堆排序 396

什么叫堆結(jié)構(gòu)呢?回憶一下我們小時候,特別是男同學(xué),基本都玩過疊羅漢的惡作劇。通常都是先把某個要整的人按倒在地,然后大家就一擁而上撲了上去……后果?后果當(dāng)然就是一笑了之。

9.7.1堆排序算法 398

9.7.2堆排序復(fù)雜度分析 405

9.8歸并排序 406

即使你是你們班級第一、甚至年級第一名,如果你沒有上分?jǐn)?shù)線,則說明你的成績排不到全省前1萬名,你也就基本失去了當(dāng)年上本科的機(jī)會了。

9.8.1歸并排序算法 407

9.8.2歸并排序復(fù)雜度分析 413

9.8.3非遞歸實現(xiàn)歸并排序 413

9.9快速排序 417

終于我們的高手要登場了,將來你工作后,你的老板讓你寫個排序算法,而你會的算法中竟然沒有快速排序,我想你還是不要聲張,偷偷去把快速排序算法找來敲進(jìn)電腦,這樣至少你不至于被大伙兒取笑。

9.9.1快速排序算法 417

9.9.2快速排序復(fù)雜度分析 421

9.9.3快速排序優(yōu)化 422

9.10總結(jié)回顧 428

目前還沒有十全十美的排序算法,有優(yōu)點(diǎn)就會有缺點(diǎn),即使是快速排序法,也只是在整體性能上優(yōu)越,它也存在排序不穩(wěn)定、需要大量輔助空間、對少量數(shù)據(jù)排序無優(yōu)勢等不足。

9.11結(jié)尾語 430

如果你有夢想的話,就要去捍衛(wèi)它。當(dāng)別人做不到的時候,他們就想要告訴你,你也不能。如果你想要些什么,就得去努力爭取。就這樣!

附錄參考文獻(xiàn) 435

大話數(shù)據(jù)結(jié)構(gòu)內(nèi)容簡介

《大話數(shù)據(jù)結(jié)構(gòu)》為超級暢銷書《大話設(shè)計模式》作者程杰潛心三年推出的扛鼎之作!以一個計算機(jī)教師教學(xué)為場景,講解數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,并充分運(yùn)用圖形語言來體現(xiàn)抽象內(nèi)容,對數(shù)據(jù)結(jié)構(gòu)所涉及到的一些經(jīng)典算法做到逐行分析、多算法比較。與市場上的同類數(shù)據(jù)結(jié)構(gòu)圖書相比,本書內(nèi)容趣味易讀,算法講解細(xì)致深刻,是一本非常適合自學(xué)的讀物。

大話數(shù)據(jù)結(jié)構(gòu)內(nèi)容截圖


大話數(shù)據(jù)結(jié)構(gòu)免費(fèi)高速下載相關(guān)軟件

  • 電腦版相關(guān)
  • 手機(jī)版相關(guān)
< >

下載地址

大話數(shù)據(jù)結(jié)構(gòu) epub高清電子版【完整免費(fèi)版】

熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)

編輯推薦