資料儲存
的目的是便於資料訪問,這個關係就是資料結構
演算法 是計算機解題的模型:輸入,輸出,順序執行,跳轉,迴圈,分支,有限步驟
人大腦組織資料的方式有線,樹,圖三種邏輯結構,而計算機儲存採用順序,鏈式和兩者混合的方式。前者是概念性的東西,後者是物理實現。
線形結構:演算法是迭代演算法,你只要注意規模最小的情況下不出錯,則演算法一般不出錯。
樹形結構:演算法是遞迴演算法,你只要運用遞迴組合的方法,將簡單情形組合出複雜情形,簡單情形不出錯,則演算法一般不會出錯。
簡單情形不出錯,則演算法一般不會出錯。
圖形結構:dfs:將圖按照樹形結構來處理,運用遞迴演算法
bfs:將圖按章線形結構來處理,運用迭代演算法
必須會下面幾個幾個演算法:
(線形兩個)
1.將兩個有序表合併為乙個表,這個演算法的變種很多,可以是鍊錶,順序表。涉及集合運算,
歸併排序,字串處理。
2.將乙個順序表的元素重新劃分,左邊的較小,右邊較大。涉及快速排序,求字串的逆串。
(樹形若干個)注意:有些可以實現,有些實現不了,可以拿來思考。
3.前序線索化,遞迴實現,棧模擬遞迴,非棧式迭代實現。
4.中序線索化,遞迴實現,棧模擬遞迴,非棧式迭代實現。
5.後序線索化,遞迴實現,棧模擬遞迴,非棧式迭代實現。
(圖形)注意:會畫**,寫出演算法的逐個步驟即可。
6.mst:prim,kruskal
7.short path:dijkstra ,floyd
8.aov:拓撲排序的dfs,bfs實現
9.aoe:關鍵路徑
嚴蔚敏資料結構應該怎麼學習。
google 上關於資料結構與演算法的回答:
我多次在google面試或者畢業招聘的時候看到這樣的情形:學習資料結構和演算法--cs課程裡面幾乎最重要的課程--的方式很不科學!!
到不是說大家用的書或者老師用的材料不對,而是說學生們對於這些課程本身的理解非常缺乏.
打好資料結構和演算法基礎的關鍵並不在於對於所有資料結構的細緻的了解,不是記住每乙個大o值或者攤餘成本..((@_@;)? [不懂]).
如果這些知識你都掌握了,當然很棒並且可以給人留下很深的印象,但是你基本上用不著啊!
你的職業生涯中或許永遠都不會要求你實現乙個紅黑樹刪除節點的演算法.但是!你必須有能力而且手起刀落輕輕鬆鬆的識別出什麼時候使用二叉樹更簡單更有效, 因為你十分需要這樣的技巧.
所以,不要試圖記住所有的東西.而是從基礎開始,做兩件事:
至於書嘛,只推薦一本--- 《演算法導論》
如果你想要一本有很多例子並且和語言相關的書的哈u,我就推薦 > 當然我還是更推薦《演算法導論》,不過這些也是很好的教輔書啦~
給乙個小小的建議:學資料結構的時候,不要陷入c語言的思維(當然,也不要陷入其他語言的思維)
通過上面幾步學習,基本上就掌握的比較好了,即便過了一段時間,也不會忘的一乾二淨;
對於某個資料結構,幾步:
1、理解該資料結構的基本概念(定義、實現)
2、嘗試理解這個資料結構的意義(為什麼它會被發明)
3、用這種資料結構解決一些對應的例題(書本上的習題、online judge上的水題)
4、嘗試用這個資料結構解決一些以往你用別的資料結構解決的問題,能否解決,為什麼。
5、再次嘗試理解這個資料結構的意義
6、嘗試改變這個資料結構以應對各種現實的問題(online judge的好題)
8、學好數學,別數都不會數。
注:以上回答取材出自知乎 :
關於資料結構
定義,性點 二叉樹是一種樹形結構,其特點是每個結點至多只有兩顆子樹,並且二叉樹的子樹有左右之分。非空二叉樹葉子結點數等於度為2的結點的個數加1,即n0 n2 1 非空二叉樹上第k層上至多有2 k 1 個結點。高度為h的二叉樹至多有2 h 1個結點 樹的最大度為2 樹的高度 從所有葉節點開始數高度到根...
資料結構 關於樹
在理解完全二叉樹之前,首先要弄清楚完全二叉樹和滿二叉樹的區別。1.什麼是滿二叉樹?1 滿二叉樹所有分支節點都有左孩子節點和右孩子節點 只有度為0和度為2的節點 2 滿二叉樹的所有葉子節點都在最下一層。2.什麼是完全二叉樹?1 葉子節點只在層次最大的兩層出現 2 最下面一層的葉子節點都依次排列在該層最...
關於資料結構(二)
接著上,關於資料結構,在實際的開發中或多或少都有涉及到,只是看自己平時沒有積累到。下面是我在專案中的幾個例項 有六個大的ui部分,每乙個大部分裡面還有具體的條目,當然不管是大條目還是點選進去後的子條目在頂部都會有乙個 back 返回 按鈕,點選後可以返回上一次所在的ui 點選返回,回到上一次所在的u...