序
上個(gè)月老大給我們講解了"淺談大型網(wǎng)站的算法和架構(gòu)",獲益匪淺。由于篇幅太多(光數(shù)據(jù)結(jié)構(gòu)大概就有20多種),我也沒(méi)有辦法一下全部吸收,故我邊理解,邊分章節(jié)與大家分享。
這周我查閱資料,來(lái)理解各個(gè)數(shù)據(jù)結(jié)構(gòu)和算法。
推薦幾本個(gè)人感覺(jué)不錯(cuò)的書(shū)籍:——我把電子書(shū)放到http://download.csdn.net/user/rtxbc這里了,需要下載,到這里進(jìn)行下載。
《指針的藝術(shù).蔡明志》——我只看了C語(yǔ)言這一篇。C語(yǔ)言個(gè)人感覺(jué)比較難的也就是指針了。
《數(shù)據(jù)結(jié)構(gòu) 使用C語(yǔ)言[朱戰(zhàn)立]》——嚴(yán)蔚敏的也不錯(cuò),可就是里面的很多語(yǔ)法都是抽象語(yǔ)法,無(wú)法運(yùn)行。我個(gè)人如果沒(méi)有辦法在終端運(yùn)行,很難印象深刻。
《算法導(dǎo)論》
為了學(xué)習(xí)下載的電子書(shū)(截個(gè)圖):
算法結(jié)構(gòu)

C語(yǔ)言

介紹
1984年,Pascal語(yǔ)義的發(fā)明者和結(jié)構(gòu)化程序設(shè)計(jì)創(chuàng)始者,沃斯提出“算法 + 數(shù)據(jù)結(jié)構(gòu) = 程序“,從而獲得當(dāng)年的圖靈獎(jiǎng)。
現(xiàn)今技術(shù)日新月異,互聯(lián)網(wǎng)技術(shù)在不斷的發(fā)展中,從而也翻開(kāi)了歷史的新篇章,這時(shí)有人提出了“算法 + 架構(gòu) = 互聯(lián)網(wǎng)程序“。
生活在這個(gè)時(shí)代的程序員來(lái)說(shuō),這又意味著什么呢?
從這篇文章開(kāi)始,我將與各位淺談大型網(wǎng)站的算法和架構(gòu),今天先了解一下基礎(chǔ)知識(shí),然后我們進(jìn)行逐步過(guò)渡。
查找算法(單機(jī))
1.有個(gè)無(wú)序數(shù)組。

2.找7到20之間的數(shù),你的思路是什么?
無(wú)怪乎以下兩點(diǎn):
1》冒泡排序
2》二分查找快

3.C代碼實(shí)現(xiàn)

執(zhí)行結(jié)果

數(shù)組中插入數(shù)據(jù)

數(shù)組問(wèn)題:插入太慢,得挪數(shù)據(jù)。
請(qǐng)看下面的代碼,


執(zhí)行結(jié)果
試試鏈表

代碼結(jié)構(gòu)
鏈表插入數(shù)據(jù)


鏈表的特點(diǎn)是插入快,查找慢。
代碼實(shí)現(xiàn):

實(shí)現(xiàn)方式

請(qǐng)看執(zhí)行過(guò)程

于是有了二叉樹(shù)(Binary Tree)
我們不難發(fā)現(xiàn)上面的兩個(gè)結(jié)構(gòu)(數(shù)組和鏈表)各有弊端。
1》數(shù)組在更新的時(shí)候比較消耗資源,需要挨個(gè)挪動(dòng)后面的元素。
2》而鏈表在查詢的時(shí)候需要從頭挨個(gè)對(duì)比之后選擇出要查詢的內(nèi)容。
綜上我們需要一個(gè)查詢更快,更新更快的結(jié)構(gòu),于是我們有了二叉樹(shù)。由于篇幅太長(zhǎng),下一篇繼續(xù)介紹。

推薦

喜歡編程
浙公網(wǎng)安備 33010602011771號(hào)