數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)秘籍

2018-12-25

招聘搞笑事


如果你關(guān)注招聘試題,越是大的公司,問的問題越基礎(chǔ),有的甚至問你什么是棧和隊(duì)列,反而一些小公司會(huì)關(guān)心你做過什么系統(tǒng),關(guān)注點(diǎn)不同,大公司更注重基礎(chǔ)扎實(shí),發(fā)展?jié)摿?,而小公司希望你立刻、馬上為他干活,通常是沒什么技術(shù)含量的活。小公司喜歡細(xì)而長(zhǎng)的竹子,大公司更喜歡碗口粗的竹筍。


我曾經(jīng)推薦一個(gè)學(xué)生到某知名公司,沒多久,學(xué)生給我說(shuō)了應(yīng)聘的事情:“我介紹我開發(fā)了企業(yè)管理系統(tǒng)、在線商城系統(tǒng)等等,沒想到他問我使用了什么數(shù)據(jù)結(jié)構(gòu)和算法,我懂很多技術(shù),那么多功能我都實(shí)現(xiàn)了,他不問,卻問我使用了什么數(shù)據(jù)結(jié)構(gòu)和算法,你說(shuō)搞笑不?數(shù)據(jù)結(jié)構(gòu)、算法我早就忘了,我會(huì)開發(fā)軟件還不行嗎?”人力資源總監(jiān)也反饋過來(lái)意見:“很搞笑,這個(gè)學(xué)生做了不少系統(tǒng),卻說(shuō)根本沒用到數(shù)據(jù)結(jié)構(gòu)和算法?!?/p>


既然雙方都覺得這是一個(gè)件搞笑事,我們就攤開來(lái)看,數(shù)據(jù)結(jié)構(gòu)到底是什么東西。


撥云見日,看清數(shù)據(jù)結(jié)構(gòu)


遇到一個(gè)實(shí)際問題,需要解決兩個(gè)事情:


(1) 如何將數(shù)據(jù)及其關(guān)系存儲(chǔ)在計(jì)算機(jī)中;


(2) 用什么方法策略解決問題。


前者是數(shù)據(jù)結(jié)構(gòu),后者是算法。只有數(shù)據(jù)結(jié)構(gòu)沒有算法,相當(dāng)于只把數(shù)據(jù)及其關(guān)系存儲(chǔ)到計(jì)算機(jī)中而沒有有效的方法去處理,就像一幢只有框架的爛尾樓;若只有算法,沒有數(shù)據(jù)結(jié)構(gòu),就像沙漠里的海市蜃樓,只不過是空中樓閣罷了。


數(shù)據(jù)是一切能輸入到計(jì)算機(jī)的信息總和,結(jié)構(gòu)是指數(shù)據(jù)之間的關(guān)系,數(shù)據(jù)結(jié)構(gòu)就是將數(shù)據(jù)及其之間的關(guān)系有效地存儲(chǔ)在計(jì)算機(jī)中。算法是指對(duì)特定問題求解步驟的一種描述,說(shuō)白了就是解決問題的方法策略。


遇到一個(gè)實(shí)際問題,充分利用所學(xué)的數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)及其之間的關(guān)系有效地存儲(chǔ)在計(jì)算機(jī)中,然后選擇合適的算法策略,并用程序高效實(shí)現(xiàn)。,這就是N.Wirth教授所說(shuō)的:數(shù)據(jù)結(jié)構(gòu)+算法=程序。


為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?


計(jì)算機(jī)專業(yè)本科生都開設(shè)數(shù)據(jù)結(jié)構(gòu)課程,它是計(jì)算機(jī)學(xué)科知識(shí)結(jié)構(gòu)的核心和技術(shù)體系的基石。研究生考試也是必考科目,隨著科學(xué)技術(shù)的飛速發(fā)展,數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)性地位不僅沒有動(dòng)搖,反而由于近年來(lái)算法工程師的高薪火爆,使得數(shù)據(jù)結(jié)構(gòu)的重視程序空前高漲。很多人覺得基本的數(shù)據(jù)結(jié)構(gòu)及操作已經(jīng)在高級(jí)語(yǔ)言中封裝,如C++、JAVA,棧、隊(duì)列、排序、優(yōu)先隊(duì)列等等,都可以直接調(diào)用庫(kù)函數(shù),學(xué)會(huì)怎么調(diào)用就好了,干嘛要重復(fù)造輪子? 那么到底有沒有必要好好學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?


先看學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)有什么用處:


(1) 學(xué)習(xí)數(shù)據(jù)有效存儲(chǔ)的方法


很多學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí),問我要不要把單鏈表插入刪除背下來(lái)?要不合上書就不會(huì)寫了。我非常詫異,為什么要背?理工科技術(shù)知識(shí)很少需要記憶的,是用的,用的!學(xué)習(xí)知識(shí)不是死記硬背,更重要的是學(xué)習(xí)處理問題的方法。同一個(gè)問題,如何有效地存儲(chǔ)數(shù)據(jù),不同的數(shù)據(jù)結(jié)構(gòu)產(chǎn)生什么樣的算法復(fù)雜性,有沒有更好的存儲(chǔ)方法提高算法的效率?通過學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),更加準(zhǔn)確和深刻地理解不同數(shù)據(jù)結(jié)構(gòu)之間的共性和聯(lián)系,學(xué)會(huì)選擇和改進(jìn)數(shù)據(jù)結(jié)構(gòu),高效地設(shè)計(jì)并實(shí)現(xiàn)各種算法,這才是數(shù)據(jù)結(jié)構(gòu)的精髓。


(2) 處理具有復(fù)雜關(guān)系的數(shù)據(jù)


現(xiàn)實(shí)中很多具有復(fù)雜關(guān)系的數(shù)據(jù),無(wú)法通過簡(jiǎn)單的庫(kù)函數(shù)調(diào)用實(shí)現(xiàn)。如同現(xiàn)在很多芯片高度集成,完全不需要芯片內(nèi)部如何,直接使用就行了。但是,如果在現(xiàn)實(shí)中遇到一個(gè)復(fù)雜問題,一個(gè)芯片只能完成其中一個(gè)功能,難道要連接十幾塊芯片來(lái)解決這一個(gè)問題?這顯然是不合適的,我們需要的是完成該復(fù)雜問題的一個(gè)芯片,因此需要運(yùn)用所學(xué)的數(shù)據(jù)結(jié)構(gòu)知識(shí),高效處理具有復(fù)雜關(guān)系的數(shù)據(jù)。


數(shù)據(jù)結(jié)構(gòu)為什么那么難?


網(wǎng)絡(luò)上太多的同學(xué)吐槽被虐,如滔滔江水連綿不絕,數(shù)據(jù)結(jié)構(gòu)太難了!真的很難嗎?其實(shí)數(shù)據(jù)結(jié)構(gòu)只是講了三種:線性結(jié)構(gòu)、樹、圖。到底難在哪里呢?通過調(diào)查了解大概有四個(gè)原因:


(1) 無(wú)法接受的描述方式


數(shù)據(jù)結(jié)構(gòu)的描述大多是抽象的形式,我們使用自然語(yǔ)言表達(dá)習(xí)慣了,不容易接受數(shù)據(jù)結(jié)構(gòu)的抽象表示。不止一個(gè)學(xué)生問我,書上的“ElemType”到底是什么類型?運(yùn)行時(shí)怎么提示錯(cuò)誤。它的意思就是“元素類型”,只是這樣的描述,你需要什么類型就寫什么類型,例如int。這樣的表達(dá)方式讓不少人崩潰。


(2) 不知道什么用處


盡管很多人學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),有的人是應(yīng)付考試,有的人考研需要,有的人參加算法競(jìng)賽需要,而很多人不太清楚學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)有什么用處,迷迷糊糊看書做題考試。


(3) 體會(huì)不到其中的妙處


由于教材、教師等等各種因素影響,很多學(xué)生沒有體會(huì)到數(shù)據(jù)結(jié)構(gòu)處理數(shù)據(jù)的妙處,經(jīng)常為學(xué)不會(huì)而焦頭爛額,無(wú)法體會(huì)其中樂趣,有趣是才有意思,興趣是最大的驅(qū)動(dòng)力。


(4) 語(yǔ)言基礎(chǔ)不好


我一直強(qiáng)調(diào)先看圖解,理清思路,再上機(jī)。還是有很多同學(xué)已經(jīng)理解了思路后,因?yàn)槿鄙賛ain函數(shù),輸入輸出格式不對(duì),缺少括號(hào)等等各種語(yǔ)言問題卡殼,而這一切統(tǒng)統(tǒng)戴給了“數(shù)據(jù)結(jié)構(gòu)太難了”這個(gè)大帽子。


數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)秘籍


在講學(xué)習(xí)秘籍之前,首先了解一下數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)的三種境界:


(1) 會(huì)數(shù)據(jù)結(jié)構(gòu)的基本操作


這是最基礎(chǔ)的要求,學(xué)會(huì)各種數(shù)據(jù)結(jié)構(gòu)的基本操作,取值、查找、插入、刪除等。先看圖解,理解各種數(shù)據(jù)結(jié)構(gòu)的定義,操作方法,然后看代碼,嘗試自己動(dòng)手上機(jī)運(yùn)行,逐漸掌握基本操作。初學(xué)時(shí),要想理解數(shù)據(jù)結(jié)構(gòu),一定要學(xué)會(huì)畫圖,通過畫圖形象表達(dá),更能體會(huì)其中的數(shù)據(jù)結(jié)構(gòu)關(guān)系。因此,初學(xué)階段學(xué)習(xí)利器:畫圖,理解,畫圖。


(2) 會(huì)利用數(shù)據(jù)結(jié)構(gòu),解決實(shí)際問題


在掌握了書上的基本操作之后,就可以嘗試?yán)脭?shù)據(jù)結(jié)構(gòu)解決一些實(shí)際問題了,先學(xué)經(jīng)典應(yīng)用問題的解決方法,體會(huì)數(shù)據(jù)結(jié)構(gòu)的使用方法,然后再做題,獨(dú)立設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)解決問題。要想熟練應(yīng)用就必須做大量的題,從做題中體會(huì)其中的方法。最好進(jìn)行專項(xiàng)練習(xí),比如線性表問題,二叉樹問題,圖問題,該階段學(xué)習(xí)利器:做題,反思,做題。


(3) 熟練使用和改進(jìn)數(shù)據(jù)結(jié)構(gòu),優(yōu)化算法


這是最高境界了,也是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的精髓所在,單獨(dú)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是無(wú)法達(dá)到這種境界的。它需要在學(xué)習(xí)算法的過程中慢慢修煉。在學(xué)習(xí)算法的同時(shí),逐步熟練應(yīng)用、改進(jìn),慢慢體會(huì)不同數(shù)據(jù)結(jié)構(gòu)和算法策略的算法復(fù)雜性,最終學(xué)會(huì)利用數(shù)據(jù)結(jié)構(gòu)改進(jìn)和優(yōu)化算法。該階段已經(jīng)在數(shù)據(jù)結(jié)構(gòu)之上,通過在ACM測(cè)試系統(tǒng)上刷各種算法題,體會(huì)利用數(shù)據(jù)結(jié)構(gòu)改進(jìn)優(yōu)化算法。該階段學(xué)習(xí)利器:刷題,總結(jié),刷題。


您的項(xiàng)目需求咨詢熱線:0760-88610046(國(guó)家高新技術(shù)企業(yè))

*請(qǐng)認(rèn)真填寫需求,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。

japanese老熟女老太交,国产精品无码无套在线,在线人成视频播放午夜福利,亚洲AV永久无码区成人网站,亚洲精品无码专区在线观看,视频二区精品中文字幕,久久久久成人片免费观看蜜芽,日本熟妇人妻xxxx,亚洲欧美日韩成人一区,亚洲欧美性视频
国产精品久久影院| 久久麻豆成人精品| 中文字幕久久久久人妻中出| 亚洲国产精品无码久久秋霞1| 国产无遮挡又爽又刺激的视频老师| 日韩熟妇Av在线播放| 亚洲 欧洲 日韩 综合av| 成 人A V在线播放免费| 成人免费无码H在线观看不卡| 92国产精品午夜福利免费| 久久精品国产99国产精品导航| 国产一本一道久久香蕉| 久久精品国产99国产精品导航| 日本二区三区欧美亚洲国产| 国内真实愉拍系列高中生| 亚洲av永久无码精品漫画| 亚洲熟妇AV一区| 亚洲AV成人一二三区观看| 免费a级毛片无码av| 男人的天堂AV色欲网免费| 国产香蕉97碰碰视频VA碰碰看| 免费萌白酱国产一区二区三区 | 亚洲GV天堂无码男同在线观看| 久久国产成人免费网站777| 久久久国产精品ⅤA麻豆LL| 国产乱人伦偷精品视频| 狠狠色丁香婷婷综合尤物| 性深夜免费福利视频| 久久久久久久久久亚洲精品| 亚洲国产精品亚瑟影院| 伦理一区二区三区| 伊人影视在线观看日韩区| 亚洲国产精久久久久久久| 五月天丁香婷婷综合| 国产精品野外A∨久久久| av大片在线无码永久免费网址| 国产亚洲精品国产午夜福利| 永久黄网站免费视频性色| 激情欧美成人久久综合| 亚洲国产亚洲片在线观看播放 | 成人精品日本亚洲777|