數(shù)據(jù)結構的作用及學習方法

  一、項目開發(fā)

  1.程序設計的本質(zhì)?

  程序 = 數(shù)據(jù)結構 + 算法

  數(shù)據(jù)是計算機化的信息,它是計算機可以直接處理的最基本和最重要的對象。無論是進行科學計算或數(shù)據(jù)處理、過程控制以及對文件的存儲和檢索及數(shù)據(jù)庫技術應用等,都是對數(shù)據(jù)進行加工處理的過程。因此,要設計出一個結構好效率高的程序,必須研究數(shù)據(jù)的特性及數(shù)據(jù)間的相互關系及其對應的存儲表示,并利用這些特性和關系設計出相應的算法和程序。

  數(shù)據(jù)結構和算法并不是一門教你編程的課,它們可以脫離任何的計算機程序設計語言,而只需要從抽象意義上去概括描述。說的簡單一點,數(shù)據(jù)結構是一門告訴你數(shù)據(jù)在計算機里如何組織的課程,而算法是一門告訴你數(shù)據(jù)在計算機里如何運算的課程,前者是結構學、后者是數(shù)學。程序設計就像蓋房子,數(shù)據(jù)結構是磚、瓦,而算法則是設計圖紙。你若想蓋房子首先必須要有原材料(數(shù)據(jù)結構),但這些原材料并不能自動地蓋起你想要的房子,你必須按照設計圖紙(算法)一磚一瓦地去砌,這樣你才能擁有你想要的房子。數(shù)據(jù)結構是程序設計這座大廈的基礎,沒有基礎,無論設計有多么高明,這座大廈不可能建造起來。算法則是程序設計之靈魂,它是程序設計的思想所在,沒有靈魂沒有思想那不叫程序,只是一堆雜亂無章的符號而已。在程序設計中,數(shù)據(jù)結構就像物質(zhì),而算法則是意識,這在哲學上可以理解為:意識是依賴與物質(zhì)而存在的,物質(zhì)是由意識而發(fā)展的。雙方相互依賴,缺一不可!

  2.寫程序的目的?

  目的是做數(shù)據(jù)處理,所有要能寫程序得有下面的這些素質(zhì)。

  根據(jù)業(yè)務需要,制定或編制解決問題的流程。編輯程序的人應該是精通業(yè)務的人。

  編輯計算機程序的要求:

  1、 精通業(yè)務

  2、 精通計算機語言

  明確我們學習的內(nèi)容和方向:

  1、 解決問題的思路

  2、 計算機語言

  3、 思維方式的轉(zhuǎn)變

  編程的重點是解決問題的思路,而思路和計算機語言是沒有關系的。

  編程的難點是思維方式的轉(zhuǎn)變,我們需要站在計算機的角度去思考和描述問題。

  3.如何提升效率?

  提升數(shù)據(jù)存取的速度,切合實際數(shù)據(jù)結構。

  最經(jīng)典的數(shù)據(jù)結構是有限的,包括線性表、棧、隊列、串、數(shù)組、二叉樹、樹、圖、查找表等,而算法則是琳瑯滿目的,多種多樣的。就好像數(shù)據(jù)結構是人體的各種組織、器官,算法則是人的思想。你可以用自己的思想去支配你的身體各個可以運動的器官隨意運動。如果你想吃蘋果,你可以削皮吃,可以帶皮吃,只要你愿意,甚至你可以不洗就吃。但無論如何,你的器官還是你的器官,就那么幾樣,目的只有一個就是吃蘋果,而方式卻是隨心所欲的!這就是算法的靈活性、不固定性。因此可以這樣說:數(shù)據(jù)結構是死的,而算法是活的。

  二、找工作

  1.筆試題


  筆試題也經(jīng)常會考數(shù)據(jù)結構的使用,大部分情況都是鏈表的合并和拆分,比如這個題就是鏈表的拆分。

  三、邏輯思維

  數(shù)據(jù)結構和算法是一部發(fā)展史,發(fā)明他們就是為了“做出東西”,學習他們是為了不重復發(fā)明輪子,當你在“做東西”時遇到運行效率上的瓶頸,就可以參考這些前人的方案,當學完后,就能評估出一個“東西”以現(xiàn)在的技術是否可能做出來有人羅列xx結構、xx算法能干嘛干嘛全是屁話,書上都有。說白了這東西就是前人的公式,學習就是為了套公式解決問題的,解決世界難題就要發(fā)明新公式(算法/結構)能否做出來包括兩點:效率是否能承受,功能是否能實現(xiàn)

  一些語言包裝了大量基礎算法,用于快速實現(xiàn)功能,一般效率也是可以接受的當效率不能接受,就需要調(diào)整算法和結構,c甚至匯編題主應該是想做看得見摸得著的東西,所以應該選擇抽象級別高的語言。先定這“東西”干嘛用的,拆分所有要實現(xiàn)的細節(jié),逐個完成,當它運作起來并快如預期,就做完了是否有必要深入學,和你在實現(xiàn)過程中的效率需求有關。

  四、學習方法

  各種結構的思想很重要,無非就是每種結構的增、刪、改、查,所有先的把每種結構的圖示畫出來,也就是理解思想,再用圖形得到相應的文字,最后再把文字翻譯成代碼。而不是一味的去追求代碼量,記住能復制粘貼就復制粘貼。所有學數(shù)據(jù)結構就是學思想。

the end

評論(3)