|
每天堅(jiān)持學(xué)習(xí)小甲魚(yú)講解的《數(shù)據(jù)結(jié)構(gòu)與算法》課程1-3節(jié),總共98節(jié)視頻課程基本上算是過(guò)了一遍。第一遍只能是盡可能的去理解一下概念和原理,基本上只能說(shuō)是與《數(shù)據(jù)結(jié)構(gòu)與算法》混了個(gè)“臉熟”;甚至連“臉熟”也談不上。畢竟《數(shù)據(jù)結(jié)構(gòu)與算法》理論性太強(qiáng),概念太多,對(duì)計(jì)算機(jī)基礎(chǔ)知識(shí)的要求也很高。《數(shù)據(jù)結(jié)構(gòu)與算法》是練內(nèi)功開(kāi)闊視野的一門(mén)課程,以我這稀爛的基礎(chǔ)必須多看幾遍反復(fù)學(xué)習(xí)才可以,所謂“讀書(shū)百遍,其義自見(jiàn)”。
雖說(shuō)學(xué)習(xí)它不能帶來(lái)RMB,但是在喧囂的環(huán)境中能安安靜靜的坐下來(lái)踏踏實(shí)實(shí)的聽(tīng)別人講課,既是一種享受,同時(shí)也是對(duì)身心的一種修煉。人不能閑著,一旦閑著了就愛(ài)惦記一些不該惦記的事情,比如,別人的.....,別人的......。
計(jì)算機(jī)內(nèi)存是個(gè)線性結(jié)構(gòu),記得C語(yǔ)言中有這樣的描述:“字節(jié)是內(nèi)存中最小的尋址單元,在內(nèi)存中每個(gè)字節(jié)都有一個(gè)獨(dú)一無(wú)二的編號(hào),這個(gè)編號(hào)就是地址”;內(nèi)存是用來(lái)存儲(chǔ)數(shù)據(jù)的,那么數(shù)據(jù)又分為:1,基本類型,如,字符,整形,浮點(diǎn)型;2,構(gòu)造類型,如數(shù)組,結(jié)構(gòu)體,枚舉。聯(lián)合體;3,指針類型;4,void類型,函數(shù)作為一段代碼,在內(nèi)存中自然也會(huì)有入口地址(函數(shù)名),當(dāng)然,void也代表“任意類型”。郝彬老師說(shuō)過(guò),編程最終就是要解決數(shù)據(jù)的存儲(chǔ)問(wèn)題;我的理解就是:在內(nèi)存中由零號(hào)地址(32位系統(tǒng)中,任何數(shù)據(jù)類型都由4個(gè)字節(jié)地址長(zhǎng)度構(gòu)成)開(kāi)始的線性結(jié)構(gòu)中,對(duì)數(shù)據(jù)進(jìn)行遍歷,查找,插入,刪除這四種操作。數(shù)據(jù)一般有順序存儲(chǔ)(如數(shù)組,結(jié)構(gòu)體)和鏈?zhǔn)酱鎯?chǔ)這兩種存儲(chǔ)方式。每種存儲(chǔ)方式都有自己的優(yōu)點(diǎn)和缺點(diǎn)。如ucos-ii操作系統(tǒng)中的任務(wù)控制塊,內(nèi)存控制塊,消息隊(duì)列就是以鏈?zhǔn)酱鎯?chǔ)方式處理的,每個(gè)控制塊都可以以一個(gè)鏈表中的“結(jié)點(diǎn)”來(lái)描述。鏈表包括單向鏈表,雙向鏈表和循環(huán)鏈表(隊(duì)列),本人深有體會(huì),學(xué)好鏈表對(duì)理解操作系統(tǒng)原理大有裨益。
因?yàn)橛?jì)算機(jī)內(nèi)存是個(gè)線性結(jié)構(gòu),要將多維的復(fù)雜的現(xiàn)實(shí)世界問(wèn)題模擬到一個(gè)一維空間,顯然就有難度。于是那些科學(xué)家們就想辦法將模擬復(fù)雜的現(xiàn)實(shí)世界的數(shù)據(jù)以各種結(jié)構(gòu)形式存儲(chǔ)到內(nèi)存中,以便于更好的處理一些復(fù)雜的問(wèn)題。于是,就構(gòu)造出了:數(shù)組,結(jié)構(gòu)體,鏈表,樹(shù),表,圖等等這些復(fù)雜的數(shù)據(jù)結(jié)構(gòu);構(gòu)造一種類型的數(shù)據(jù)本身就是一種智慧,應(yīng)該也是一種算法的體現(xiàn)。解決問(wèn)題的方法有很多,哪種方法最高效呢?于是,那些牛人又提出了“時(shí)間復(fù)雜度”和“空間復(fù)雜度”這兩個(gè)指標(biāo)或概念來(lái)衡量一種算法的“復(fù)雜度”。這些牛人包括霍夫曼(樹(shù)),最優(yōu)二叉樹(shù),“樹(shù)”這種數(shù)據(jù)結(jié)構(gòu)的代表,卡爾曼(濾波),高斯(法國(guó)神童),哈希算法(HASH是不是人名?)等等。什么"最短路徑",”哈希算法“,”折中算法“,”黃金分割法“,”線索二叉樹(shù)“等等都是一些牛人的智慧。
算法中,最牛逼的應(yīng)該是遞歸。用牛人的話說(shuō),人用“迭代”,神用“遞歸”。的確用遞歸解決一些重復(fù)的問(wèn)題只要設(shè)置好退出遞歸的條件就是神來(lái)之筆。例子很多,不多說(shuō)了。有一種感覺(jué):過(guò)一遍《數(shù)據(jù)結(jié)構(gòu)與算法》真的大大開(kāi)拓了視野,知道了什么是神什么是人;之前學(xué)習(xí)過(guò)的那些單片機(jī)程序僅僅只能算是入門(mén),沒(méi)什么大不了的。開(kāi)發(fā)板永遠(yuǎn)是別人的,僅僅只能起個(gè)入門(mén)的作用。
作為一個(gè)學(xué)習(xí)者,有時(shí)候不必妄自菲薄,有時(shí)候也大可不必因?yàn)閷W(xué)會(huì)了一點(diǎn)東西而妄自尊大!任何一門(mén)科學(xué)是人類智慧的結(jié)晶而不是某個(gè)人的成果。個(gè)人頂多是一塊磚,僅此而已。據(jù)說(shuō)法國(guó)那位天才數(shù)學(xué)家高斯先生,到死也沒(méi)有得到國(guó)際象棋中的“八皇后問(wèn)題”的正確答案。
woc,這個(gè)點(diǎn)了。tmd,白天昏昏沉沉,晚上盡胡說(shuō)八道睡不著;叫老子咋整?!睡覺(jué)。
---- 王衍
|
|