www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]如果你關(guān)注計算機(jī)專業(yè)招聘試題,會發(fā)現(xiàn)越是大型公司,問的問題越基礎(chǔ),有的甚至問你什么是棧和隊列,反而一些小公司會關(guān)心你做過什么系統(tǒng)。從關(guān)注點(diǎn)的不同可以看出,大公司更注重基礎(chǔ)扎實和發(fā)展?jié)摿?,而小公司希望你立刻能夠為其干活??梢赃@樣比喻:小公司喜歡細(xì)而長的竹子,大公司更喜歡碗口粗的竹筍。

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

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

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

當(dāng)我們遇到一個實際問題時,首先需要解決兩件事:

(1)如何將數(shù)據(jù)存儲在計算機(jī)中;

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

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

數(shù)據(jù)是一切能輸入計算機(jī)中的信息的總和,結(jié)構(gòu)是指數(shù)據(jù)之間的關(guān)系。數(shù)據(jù)結(jié)構(gòu)就是將數(shù)據(jù)及其之間的關(guān)系有效地存儲在計算機(jī)中并進(jìn)行基本操作。算法是對特定問題求解步驟的一種描述,通俗講就是解決問題的方法和策略。

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

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

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

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

(1)學(xué)習(xí)有效存儲數(shù)據(jù)的方法。很多學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時,問我要不要把單鏈表插入、刪除背下來?要不合上書就不會寫了。我非常詫異,為什么要背?理工科技術(shù)知識很少需要記憶的,是用的,用的!學(xué)習(xí)知識不能只靠死記硬背,更重要的是學(xué)習(xí)處理問題的方法。如何有效地存儲數(shù)據(jù),不同的數(shù)據(jù)結(jié)構(gòu)產(chǎn)生什么樣的算法復(fù)雜性,有沒有更好的存儲方法提高算法的效率?

(2)處理具有復(fù)雜關(guān)系的數(shù)據(jù)?,F(xiàn)實中很多具有復(fù)雜關(guān)系的數(shù)據(jù)無法通過簡單的庫函數(shù)調(diào)用實現(xiàn)。如同現(xiàn)在很多芯片高度集成,完全不需要知道芯片內(nèi)部如何,直接使用就行了。但是,如果在現(xiàn)實中遇到一個復(fù)雜問題,現(xiàn)有的芯片根本無法解決,或者一個芯片只能完成其中一個功能,而我們需要的是完成該復(fù)雜問題的一個集成芯片,這時就需要運(yùn)用所學(xué)的數(shù)據(jù)結(jié)構(gòu)知識來高效處理具有復(fù)雜關(guān)系的數(shù)據(jù)。

(3)提高算法效率。很多問題的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)運(yùn)行效率較低,需要借助高級數(shù)據(jù)結(jié)構(gòu)或通過改進(jìn)數(shù)據(jù)結(jié)構(gòu)來提高算法效率。

通過學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),更加準(zhǔn)確和深刻地理解不同數(shù)據(jù)結(jié)構(gòu)之間的共性和聯(lián)系,學(xué)會選擇和改進(jìn)數(shù)據(jù)結(jié)構(gòu),高效地設(shè)計并實現(xiàn)各種算法,這才是數(shù)據(jù)結(jié)構(gòu)的精髓。

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

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

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

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

(3)體會不到其中的妙處。由于教材、教師等各種因素影響,很多學(xué)生沒有體會到數(shù)據(jù)結(jié)構(gòu)處理數(shù)據(jù)的妙處,經(jīng)常為學(xué)不會而焦頭爛額,學(xué)習(xí)重在體會其中的樂趣,有樂趣才有興趣,興趣是最好的驅(qū)動力。

(4)語言基礎(chǔ)不好。我一直強(qiáng)調(diào)先看圖解,理清思路,再上機(jī)。可還是有很多同學(xué)已經(jīng)理解了思路后,因為缺少main函數(shù),輸入/輸出格式不對,缺少括號等各種語言問題卡殼,而這一切都被戴上了“數(shù)據(jù)結(jié)構(gòu)太難了”的大帽子。

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

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

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

(2)會利用數(shù)據(jù)結(jié)構(gòu)解決實際問題。在掌握了書中的基本操作之后,就可以嘗試?yán)脭?shù)據(jù)結(jié)構(gòu)解決一些實際問題了。先學(xué)經(jīng)典應(yīng)用問題的解決方法,體會數(shù)據(jù)結(jié)構(gòu)的使用方法,再做題,獨(dú)立設(shè)計數(shù)據(jù)結(jié)構(gòu)解決問題。要想熟練應(yīng)用就必須做大量的題,在做題的過程中體會其中的方法。最好進(jìn)行專項練習(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)是無法達(dá)到這種境界的。數(shù)據(jù)結(jié)構(gòu)與算法相輔相成,需要在學(xué)習(xí)算法的過程中慢慢修煉。在學(xué)習(xí)算法的同時,逐步熟練應(yīng)用、改進(jìn)數(shù)據(jù)結(jié)構(gòu),慢慢體會不同數(shù)據(jù)結(jié)構(gòu)和算法策略的算法復(fù)雜性,最終學(xué)會利用數(shù)據(jù)結(jié)構(gòu)改進(jìn)和優(yōu)化算法。這一階段已經(jīng)在數(shù)據(jù)結(jié)構(gòu)之上,可以通過在ACM測試系統(tǒng)上刷各種算法題,體會數(shù)據(jù)結(jié)構(gòu)在算法設(shè)計中的應(yīng)用。這一階段的學(xué)習(xí)利器是:刷題、總結(jié)、刷題。

它讓數(shù)據(jù)結(jié)構(gòu)變得簡單

趣學(xué)數(shù)據(jù)結(jié)構(gòu) 陳小玉 著

本書特色

本書具有五大特色。

(1)完美圖解,通俗易懂。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)最好的辦法就是畫圖、畫圖、畫圖。本書中的每一個基本操作和演示都有圖解,有了圖解,一切就都變得簡單,迎刃而解。

(2)實例豐富,簡單有趣。本書結(jié)合大量實例,講述如何利用數(shù)據(jù)結(jié)構(gòu)解決實際問題,使復(fù)雜難懂的問題變得簡單有趣,給讀者帶來巨大的閱讀樂趣,使讀者在閱讀中不知不覺地學(xué)會數(shù)據(jù)結(jié)構(gòu)知識,體會數(shù)據(jù)結(jié)構(gòu)的妙處。

(3)深入淺出,透析本質(zhì)。本書采用簡潔易懂的代碼描述,抓住本質(zhì),通俗描述及注釋使代碼更加易懂。本書不僅對數(shù)據(jù)結(jié)構(gòu)設(shè)計和操作描述全面細(xì)致,而且有復(fù)雜性分析過程。

(4)實戰(zhàn)演練,循序漸進(jìn)。本書在每一個數(shù)據(jù)結(jié)構(gòu)講解清楚后,進(jìn)行實戰(zhàn)演練,使讀者在實戰(zhàn)中體會數(shù)據(jù)結(jié)構(gòu)的設(shè)計和操作,增強(qiáng)自信,從而提高了讀者獨(dú)立思考、自己動手實踐的能力。豐富的練習(xí)題和思考題及時檢驗對所學(xué)知識的掌握情況,為讀者從小問題出發(fā),逐步解決大型復(fù)雜性問題奠定基礎(chǔ)。

(5)網(wǎng)絡(luò)資源,技術(shù)支持。本書為讀者提供本書所有范例程序的源代碼、練習(xí)題以及答案解析,這些源代碼可以自由修改編譯,以符合自己的需要。本書提供源代碼執(zhí)行、調(diào)試說明書,提供博客、QQ群技術(shù)支持,為讀者答疑解惑。

本書內(nèi)容

本書包括10章。

第1章是基礎(chǔ)知識,介紹數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)和算法復(fù)雜性的計算方法。

第2~5章是線性結(jié)構(gòu),講解線性表、棧和隊列、字符串、數(shù)組等的基本操作和應(yīng)用。

第6章是樹形結(jié)構(gòu),講解樹、二叉樹、線索二叉樹、樹和森林以及樹的經(jīng)典應(yīng)用。

第7章是圖形結(jié)構(gòu),講解圖的存儲、遍歷以及圖的經(jīng)典應(yīng)用。

第8~9章是數(shù)據(jù)結(jié)構(gòu)的基本應(yīng)用,講解查找、排序的方法和算法復(fù)雜性比較。

第10章是高級數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用,講解優(yōu)先隊列、并查集、B-樹、B+樹、紅黑樹等。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉