一、項目開發
1.程序設計的本質?
程序 = 數據結構+算法
數據是計算機化的信息,它是計算機可以直接處理的基本和重要的對象。無論是進行科學計算或數據處理、過程控制以及對文件的存儲和檢索及數據庫技術應用等,都是對數據進行加工處理的過程。因此,要設計出一個結構好效率高的程序,必須研究數據的特性及數據間的相互關系及其對應的存儲表示,并利用這些特性和關系設計出相應的算法和程序。
數據結構和算法并不是一門教你編程的課,它們可以脫離任何的計算機程序設計語言,而只需要從抽象意義上去概括描述。說的簡單一點,數據結構是一門告訴你數據在計算機里如何組織的課程,而算法是一門告訴你數據在計算機里如何運算的課程,前者是結構學、后者是數學。程序設計就像蓋房子,數據結構是磚、瓦,而算法則是設計圖紙。你若想蓋房子首先必須要有原材料(數據結構),但這些原材料并不能自動地蓋起你想要的房子,你必須按照設計圖紙(算法)一磚一瓦地去砌,這樣你才能擁有你想要的房子。數據結構是程序設計這座大廈的基礎,沒有基礎,無論設計有多么高明,這座大廈不可能建造起來。算法則是程序設計之靈魂,它是程序設計的思想所在,沒有靈魂沒有思想那不叫程序,只是一堆雜亂無章的符號而已。在程序設計中,數據結構就像物質,而算法則是意識,這在哲學上可以理解為:意識是依賴與物質而存在的,物質是由意識而發展的。雙方相互依賴,缺一不可!
2.寫程序的目的?
目的是做數據處理,所有要能寫程序得有下面的這些素質。
根據業務需要,制定或編制解決問題的流程。編輯程序的人應該是精通業務的人。
編輯計算機程序的要求:
1、 精通業務
2、 精通計算機語言
明確我們學習的內容和方向:
1、 解決問題的思路
2、 計算機語言
3、 思維方式的轉變
編程的重點是解決問題的思路,而思路和計算機語言是沒有關系的。
編程的難點是思維方式的轉變,我們需要站在計算機的角度去思考和描述問題。
3.如何提升效率?
提升數據存取的速度,切合實際數據結構。
經典的數據結構是有限的,包括線性表、棧、隊列、串、數組、二叉樹、樹、圖、查找表等,而算法則是琳瑯滿目的,多種多樣的。就好像數據結構是人體的各種組織、器官,算法則是人的思想。你可以用自己的思想去支配你的身體各個可以運動的器官隨意運動。如果你想吃蘋果,你可以削皮吃,可以帶皮吃,只要你愿意,甚至你可以不洗就吃。但無論如何,你的器官還是你的器官,就那么幾樣,目的只有一個就是吃蘋果,而方式卻是隨心所欲的!這就是算法的靈活性、不固定性。因此可以這樣說:數據結構是死的,而算法是活的。
二、找工作
1.筆試題
筆試題也經常會考數據結構的使用,大部分情況都是鏈表的合并和拆分,比如這個題就是鏈表的拆分。
三、邏輯思維
數據結構和算法是一部發展史,發明他們就是為了“做出東西”,學習他們是為了不重復發明輪子,當你在“做東西”時遇到運行效率上的瓶頸,就可以參考這些前人的方案,當學完后,就能評估出一個“東西”以現在的技術是否可能做出來有人羅列xx結構、xx算法能干嘛干嘛全是屁話,書上都有。說白了這東西就是前人的公式,學習就是為了套公式解決問題的,解決世界難題就要發明新公式(算法/結構)能否做出來包括兩點:效率是否能承受,功能是否能實現
一些語言包裝了大量基礎算法,用于快速實現功能,一般效率也是可以接受的當效率不能接受,就需要調整算法和結構,c甚至匯編題主應該是想做看得見摸得著的東西,所以應該選擇抽象級別高的語言。先定這“東西”干嘛用的,拆分所有要實現的細節,逐個完成,當它運作起來并快如預期,就做完了是否有必要深入學,和你在實現過程中的效率需求有關。
四、學習方法
各種結構的思想很重要,無非就是每種結構的增、刪、改、查,所有先的把每種結構的圖示畫出來,也就是理解思想,再用圖形得到相應的文字,后再把文字翻譯成代碼。而不是一味的去追求代碼量,記住能復制粘貼就復制粘貼。所有學數據結構就是學思想。