資料存儲 的目的是便于資料通路,這個關系就是資料結構
算法 是計算機解題的模型:輸入,輸出,順序執行,跳轉,循環,分支,有限步驟
人大腦組織資料的方式有線,樹,圖三種邏輯結構,而計算機存儲采用順序,鍊式和兩者混合的方式。前者是概念性的東西,後者是實體實作。
線形結構:算法是疊代算法,你隻要注意規模最小的情況下不出錯,則算法一般不出錯。
樹形結構:算法是遞歸算法,你隻要運用遞歸組合的方法,将簡單情形組合出複雜情形,簡單情形不出錯,則算法一般不會出錯。
簡單情形不出錯,則算法一般不會出錯。
必須會下面幾個幾個算法:
(線形兩個)
(樹形若幹個)注意:有些可以實作,有些實作不了,可以拿來思考。
(圖形)注意:會畫表格,寫出算法的逐個步驟即可。
7.short path:Dijkstra ,Floyd
<a href="http://zhidao.baidu.com/link?url=CvsMPFtpyZXI422KCZsANoDNtmXj691R60FnFkd8nL28_fauYxrVxSvo0FSMo1PjC43R8Tinlm_e4Gpb-WS7xK">嚴蔚敏資料結構應該怎麼學習。</a>
Google 上關于資料結構與算法的回答:
我多次在google面試或者畢業招聘的時候看到這樣的情形:學習資料結構和算法--CS課程裡面幾乎最重要的課程--的方式很不科學!!
到不是說大家用的書或者老師用的材料不對,而是說學生們對于這些課程本身的了解非常缺乏.
打好資料結構和算法基礎的關鍵并不在于對于所有資料結構的細緻的了解,不是記住每一個大O值或者攤餘成本..((@_@;)? [不懂]).
如果這些知識你都掌握了,當然很棒并且可以給人留下很深的印象,但是你基本上用不着啊!
你的職業生涯中或許永遠都不會要求你實作一個紅黑樹删除節點的算法.但是!你必須有能力而且手起刀落輕輕松松的識别出什麼時候使用二叉樹更簡單更有效, 因為你十分需要這樣的技巧.
是以,不要試圖記住所有的東西.而是從基礎開始,做兩件事:
第一件事. 把資料結構圖形化,視覺化.(突然想起來我高中競賽老師說的一句話:數形結合千般好,一旦不做萬事休啊! 就是要畫圖! )在直覺上感受一個資料結構是什麼樣子的.使用它是什麼感覺,抽象上和具體實作上是什麼樣子的.這就是最重要的事情.并且無論是對于簡單的隊列,棧還是天殺的平衡樹都很重要而且有效.把資料結構畫出來,在你的腦袋瓜裡面就能想象出來,總之,你需要做的就是,直覺的去了解這些資料結構.
第二件事.學習什麼時候用什麼樣的資料結構和算法.對于學生來說這很難,而且你要做作業的時候老師也沒告訴你們這該怎麼辦.╮( ̄▽ ̄")╭ 不過沒關系. 你要認識到當你真正處理到現實問題的時候或許你才能掌握某些資料結構,比如哈希表.但是即使是個學生,你也應該知道資料結構的實用性:什麼時候你需要個哈希表,什麼時候你需要個樹,什麼時候你需要個堆? 而不是一開始就陷入到追求細節中去.
我在google面試的時候,我經常會問一個可以由二叉樹搜尋解決的問題. 好的應聘者可以幾分鐘内就可以想到用二叉樹來解決,而且對于我的其他問題也差不多10-15分鐘就可以解決.當然,偶爾會有一個應聘者,他能直覺的認識樹這種結構,而且可以把我的問題形象化,圖形化的描述出來.當然他或許對于某些操作的時間複雜度不甚了解,但是對于問題他卻可以立馬回應,因為他們腦袋裡就有這樣的樹結構啊~是以他也能拿到工作啊.
至于書嘛,隻推薦一本--- <算法導論>
給一個小小的建議:學資料結構的時候,不要陷入C語言的思維(當然,也不要陷入其他語言的思維)
先把你學的計算機語言忘了,然後發揮你的想象力,把各種資料結構在你的大腦中具象化,一開始不必追求過多的理論知識,也不要關心嚴密性,追求感性的認知;
當能夠形象地想象出某種資料結構的時候,動手用你學的C語言實作它。記住,不要追求完備的功能,隻要寫一個最簡單的實作,一開始就追求完美不是一個好的學習過程;
寫完之後,回過頭看那些理論上的東西,形成知識體系;
最後,如果還有精力,重新寫一個功能更完備一點兒的實作;
通過上面幾步學習,基本上就掌握的比較好了,即便過了一段時間,也不會忘的一幹二淨;
對于某個資料結構,幾步:
1、了解該資料結構的基本概念(定義、實作)
2、嘗試了解這個資料結構的意義(為什麼它會被發明)
3、用這種資料結構解決一些對應的例題(書本上的習題、Online Judge上的水題)
4、嘗試用這個資料結構解決一些以往你用别的資料結構解決的問題,能否解決,為什麼。
5、再次嘗試了解這個資料結構的意義
6、嘗試改變這個資料結構以應對各種現實的問題(Online Judge的好題)
8、學好數學,别數都不會數。
本文轉自趙青青部落格園部落格,原文連結:http://www.cnblogs.com/zhaoqingqing/p/3902544.html,如需轉載請自行聯系原作者