什么是數(shù)據(jù)結(jié)構(gòu)和算法?
網(wǎng)友解答: 能否靈活高效的運(yùn)用數(shù)據(jù)結(jié)構(gòu)與算法,通常是評(píng)價(jià)一個(gè)程序員是高手還是菜鳥(niǎo)的重要一環(huán)。數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)相關(guān)專業(yè)的本科階段,會(huì)有一門(mén)課專門(mén)叫做數(shù)據(jù)結(jié)構(gòu),我們當(dāng)時(shí)用的教材是清華大學(xué)出版
能否靈活高效的運(yùn)用數(shù)據(jù)結(jié)構(gòu)與算法,通常是評(píng)價(jià)一個(gè)程序員是高手還是菜鳥(niǎo)的重要一環(huán)。
數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)相關(guān)專業(yè)的本科階段,會(huì)有一門(mén)課專門(mén)叫做數(shù)據(jù)結(jié)構(gòu),我們當(dāng)時(shí)用的教材是清華大學(xué)出版,嚴(yán)蔚敏主編的《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)。這本書(shū)里面詳細(xì)介紹了程序員常用的各種數(shù)據(jù)結(jié)構(gòu),如數(shù)組,表,堆棧,隊(duì)列,圖,樹(shù)等。如果你了解上面任意一個(gè)概念,那你大概就能由點(diǎn)及面推測(cè)出數(shù)據(jù)結(jié)構(gòu)是什么,我總結(jié)認(rèn)為,數(shù)據(jù)結(jié)構(gòu)是一種有規(guī)律的存儲(chǔ)并操作數(shù)據(jù)的方式,可以看做建房子階段的材料,比如混凝土,磚塊,鋼筋,都屬于一種數(shù)據(jù)結(jié)構(gòu)。
算法算法也是計(jì)算機(jī)相關(guān)專業(yè)在本碩階段都繞不過(guò)去的重要課程,我們上本科期間,學(xué)的教材是《算法導(dǎo)論》。
算法,可以描述為對(duì)一個(gè)問(wèn)題的解決方案與策略,是通過(guò)操作各種不同的數(shù)據(jù)結(jié)構(gòu)來(lái)解決問(wèn)題的一種方法。算法獨(dú)立于編程語(yǔ)言,代表的是一種思想。它是能夠驅(qū)動(dòng)編程語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)的靈魂。這也是為什么在很多互聯(lián)網(wǎng)公司面試的時(shí)候喜歡問(wèn)算法的原因,因?yàn)槟軌蛴酶咝?zhǔn)確的算法解決問(wèn)題的人才,通常都是頭腦清晰的聰明人,這類人就算在操作編程工具方面有欠缺,也能夠憑借自身優(yōu)勢(shì)快速學(xué)習(xí)。
相輔相成上面說(shuō)算法驅(qū)動(dòng)數(shù)據(jù)結(jié)構(gòu),反過(guò)來(lái),合適的數(shù)據(jù)結(jié)構(gòu)同樣能夠提高算法的效率。
比如要實(shí)現(xiàn)一個(gè)先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),在現(xiàn)有JAVA的接口下,只需要用Stack即可,但是假如從來(lái)沒(méi)有存在過(guò)Stack,只有一個(gè)先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)List,那么你就需要自己利用List來(lái)實(shí)現(xiàn)先進(jìn)后出(這也是一個(gè)常見(jiàn)面試題),無(wú)形中就增加了算法的工作量。
綜上,數(shù)據(jù)結(jié)構(gòu)是建筑過(guò)程中的磚瓦,算法是設(shè)計(jì)方案。當(dāng)方案與材料相匹配,才會(huì)有一個(gè)完美的房子。
以上我的淺見(jiàn),歡迎各位在下方評(píng)論區(qū)留言互動(dòng)。
我是蘇蘇思量,來(lái)自BAT的Java開(kāi)發(fā)工程師,每天分享技術(shù)見(jiàn)聞,歡迎關(guān)注我,與我共同進(jìn)步。
網(wǎng)友解答:什么是“算法”
算法,一看字面就知道,肯定是“計(jì)算方法”的簡(jiǎn)稱啦,特指“計(jì)算機(jī)的計(jì)算方法”,所以,算法是由電腦程序來(lái)實(shí)現(xiàn)的。
算法,英文叫Algorithm,就是為了讓電腦解決一個(gè)問(wèn)題而設(shè)計(jì)出來(lái)的一套計(jì)算方法,這套計(jì)算方法的設(shè)計(jì)是依靠“數(shù)學(xué)模型”的建立。
也就是說(shuō),程序員在設(shè)計(jì)算法之前,會(huì)將實(shí)際問(wèn)題理解分析,歸納為一個(gè)“具體的數(shù)學(xué)問(wèn)題”。
算法是解決問(wèn)題的計(jì)算方法