記得大一時學c++,老師順帶講了資料結構的內容。當時對資料結構不求甚解,也不知道這東西對實際程式設計能起到多大的作用。學完考完就扔到一邊,全然不顧。
自從ee轉到了cs,寫得**開始逐漸增多(其實到目前為止,也只做過兩個很小的專案),才越發的感受到資料結構對程式設計是有多麼重要。乙個設計不好的資料結構足以把乙個程式設計師活活累死,把他程式的效率降低到慘不忍睹的地步。
這樣的感想來自於我最近做的乙個專案。這個專案對於我這個新手來說,可以算是比較龐大和富有挑戰性的。其中一部分演算法,我利用了乙個現成的庫,從此我的噩夢就開始了。
先不說看懂第三方庫的資料結構需要耗費很多力氣,最關鍵的是,這個庫的資料結構設計得實在不近如人意(或者說對於我的應用來看,它的資料結構實在稱不上高效)。但由於它的演算法確實準確,我如果要重新實現該庫中的演算法,需要花上大量時間,而且結果也不一定有它可靠,因此只好先呼叫它的演算法,自己程式設計實現剩餘的部分。
由於自己是新手,不敢大幅改動該庫里的函式,僅僅是新增了一些自己需要的函式。但是隨著寫的程式越來越複雜,我逐漸被複雜的資料呼叫關係擊潰了。每次面對一大堆亂七八糟的資料要梳理,我就難以打起精神,專案的進展也因此而受到嚴重的影響。
昨天,我終於無法忍受這樣的低效率,花了大半天的時間,重新新增了一些我想要的資料結構,如輔助的類和結構體。結果,預計三天才能完成的**量,乙個下午就能輕鬆完成。
以前沒有感受到資料結構的重要性,是沒有碰到真正複雜的程式。對於資料量很大,計算量也很大的程式,如果自己在程式設計的時候明顯感受到處理資料十分吃力,就應該停下來想想自己的資料結構是不是設計得不合理。有的時候,放棄才會有收穫。就像今天,我一口氣刪掉了之前4天寫的所有**,花了大半天重新改造資料結構,雖然浪費了這四天的時間,但是可以避免程式的無力以及未來可以預見的更多要被浪費的時間。雖然改造**看起來很費勁,但是卻為你的程式換來了了高效。最重要的是,你不會感覺你寫的**跟屎一樣,讓你的自信心不停受挫。因此,我想乙個好程式設計師一定不會輕易就開始寫**,只有思路清晰,資料結構合理的程式才是好程式!
程式設計重點在於設計好的資料結構
1.面向資料結構的設計思想 設計程式,不再於使用什麼物件導向思想。而在於設計通用且相對方便的資料結構。計算機本質上處理的東西就是資料,而不是物件。面向資料結構的設計思想 以資料為中心 先確定客戶端輸入什麼資料,需要輸出什麼資料,然後設計資料結構 設計演算法運算元據結構。乙個設計,重要的是解決問題,而...
如何學好資料結構?
一 氣泡排序 演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。二 選擇排...
設計好資料庫表對系統的重要性
之前自己做的乙個成績管理系統,一開始把資料庫的表設計的太簡單了,結果完成了三分之一後,著手下乙個功能時才發現問題很嚴重。當時我匯入好幾次的成績表,同乙個學生的不同考試被搞成了不同的幾條資料來對待。而我要的是乙個人一條資料。那時也發現,在控制台運算元據庫的刪除,是多麼的快。因為這次的資料量略大,而給了...