數據結構清單
Binomial Heap
Leftist Tree:左傾堆
重型網絡教程
2.CS 598 JGE:Advanced Data Structures(Fall 2015)
3.COP 5536 Advanced Data Structures(Florida)
5.Geeksforgeeks(very much)
6.COMP 5408:Advanced Data Struestures
書籍推薦
Algorithms in C (Computer Science Series)
(2人評價)
作者: Robert Sedgewick
出版社: Addison-Wesley Professional
出版年: 1990-01-11
評語:非常耐心的講解一些常見的算法,很容易入門。這本書涉獵面較廣,除了經典的算法,還有比如數值計算、信號處理、字符串處理、並行運算算法的介紹。
Data Structures and Algorithm Analysis in C (2nd Edition)
8.8 (61人評價)
作者: Mark Allen Weiss
出版社: Addison Wesley
出版年: 1996-09-19
評語:介紹算法和數據結構,講解很深入。但有些部分的講解有些過於概括,不容易理解。
The Design and Anaylsis of Computer Algorithms
作者: Alfred V. Aho / John E. Hopcroft / Jeffrey D. Ullman
出版社: Addison-Wesley
出版年: 1974-1-11
頁數: 470
定價: USD 71.60
裝幀: Paperback
ISBN: 978020100029
Algorithms on Strings, Trees, and Sequences
作者:Dan Gusfield
高級數據結構
1.MIT的高級數據結構教程
這門課包含各種讓本屌世界觀崩壞的奇詭數據結構和算法,它們包括但不限於:
-
帶"記憶"的數據結構(Data Structure with Persistence)。
-
van Emde Boas(逆天的插入,刪除,前驅和后繼時間復雜度)。
-
o(1)時間復雜度的的LCA、RMQ和LA解法。
-
奇幻的o(n)時間復雜度的Suffix Tree構建方法。
-
o(lglgn)的BST。
-
...
總之高潮迭起,分分高能,唯一的不足就是沒有把它們實現一圈
2. 林厚從主編的《高級數據結構》
林厚從主編的《高級數據結構》在基本數據結構的基礎上,圍繞一些常用的高級數據結構,結合大量實戰例題,深入分析"數據結構是如何服務於算法的"。本書主要內容包括:哈希表、樹與二叉樹、優先隊列與堆、並查集、線段樹、樹狀數組、伸展樹、Treap、AVL樹、紅—黑樹、SBT、塊狀鏈表與塊狀樹、后綴樹與后綴數組、樹鏈剖分與動態樹等。
3. Advanced Data Structures in C++
Advanced Data Structures in C++; $10.00; 826 pages; 2006, 2014; Vic Broquard; Broquard eBooks; ISBN: 978-0-9705697-7-6 3rd Edition
Link: http://www.broquard-ebooks.com/advanced-data-structures-in-cpp/
Chapter 1 — A Review of Classes
Chapter 2 — Advanced Features of Classes
Chapter 3 — Operator Overloading
Chapter 4 — Inheritance
Chapter 5 — Abstract Base Classes
Chapter 6 — C++ Error Handling
Chapter 7 — A Review of the Basic Container Classes
Chapter 8 — Templates
Chapter 9 — Binary Files and Hashing Techniques
Chapter 10 — Trees
Chapter 11 — Sorting Algorithms
Chapter 12 — B-trees and AVL Trees
Chapter 13 — Heaps, Priority Queues, and Graphs
Chapter 14 — Of Sets and Maps
Chapter 15 — An Introduction to the STL — Standard Template Library
Chapter 16 — Complex Analysis
4.CSDN上有不少"高級數據結構"的資源
知乎數據結構
-
如何學習數據結構
鏈接:https://www.zhihu.com/question/21318658
資源論
1.讀書橙書: 《算法 第四版》
亞馬遜中文版: amazon.cn 的頁面
線上資源: Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
配套的習題答案:
aistrate/AlgorithmsSedgewick · GitHub
http://algs4.cs.princeton.edu/code/
2.Coursera課程:
Part 1: https://www.coursera.org/course/algs4partI
Part 2: https://class.coursera.org/algs4partII-006
3.斯坦福的算法公開課
Part 1: https://www.coursera.org/course/algo
Part 2: https://www.coursera.org/course/algo2
4.普林斯頓的算法課程
Coursera - Free Online Courses From Top Universities
Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
5.算法可視化
6.在線視頻客課堂:網易雲課堂,慕課
★★★★★浙江大學的:數據結構 - 網易雲課堂
★★★★★清華大學的:數據結構-學堂在線慕課(MOOC)平台
7.數據結構-C語言
《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明
方法實踐論
-
數據結構的前期學習要重理解。以倒推的方式,搞清楚每種數據結構產生的目標。多畫畫圖,思考一下,理解透徹以后。再去做練習題會事半功倍。
-
把線性表、鏈表、樹、圖、各種排序算法,熟悉一遍,熟悉需要達到的結果是提到一種結構,腦海立馬可以反映出其中元素的組織方式,插入刪除操作的步驟。
-
把所有的(大部分)的算法和數據結構寫一遍。這是一個做合格程序員的基礎;
-
把《STL源碼剖析》看看。會對設計實現有一些新的認識。
-
參考STL的實現,拋去內存管理和迭代器的部分只看實現的話還是很容易從中學到東西的。 從vector、list到 hashtable 到紅黑樹等都有;
-
強啃linux內核剖析(同時在參考30天自制操作系統和thu的ucore os的7個實驗),看到里面的源碼,更加進一部的理解了數據結構,操作系統;
-
把所有經典算法寫一遍:二分查找,幾種經典排序如冒泡,快排,歸並排序,並弄清楚他們的差別;top-k,二叉樹,二叉樹查找,平衡樹,B樹系列,大小根堆,最好知道各自的應用場景加深理解;
-
看算法源碼:看一些開源系統里面應用算法知識的源碼,比如緩存系統里面的雙向鏈表+hash實現;數據庫系統里面的B+樹的使用實現過程;
-
刷題:<劍指Offer>,<編程之美>,<結構之法:面試和算法心得>,LeetCodeOnlineJudge,九度OnlineJudge,用代碼記錄你的成長之路,冉文傑算法問題選編, LintCode - 編程面試題在線訓練平, LeetCode / LintCode 答案查詢
-
不要總折騰數據結構、發明數據結構,理解不同應用場景的特點,遠比一味地看算法、數據結構來的實在, 機械硬盤為什么索引文件系統常常采用B+樹?因為機械硬盤順序讀取快、隨機讀取慢的問題,B+樹就是專門針對機械硬盤這個工作特點提出的;
-
開竅方法之一:學習LISP
-
去杭電,pku之類的oj上刷刷題目
-
The Science of Programming, 證明簡單代碼段的正確性是一個很神奇的技能——因為面試時大多數公司都會要求在紙上寫一段代碼,然后面試官檢查這段代碼,如果你能夠自己證明自己寫的代碼是正確的,面試官還能挑剔什么呢?
-
進階版:《STL源碼剖析》
學習數據結構/算法要經歷3個階段:
理解數據結構/算法的原理
也就是說能夠在腦子里明白這個數據結構/算法是怎樣工作的,知道這樣做的正確性。當然,如果理解有困難可以借助其他知友們推薦的可視化工具:VisuAlgo - 數據結構和算法動態可視化 (Chinese)
用C/C++實現
這一步也是最考驗一個人編程基本功的。寫出簡潔、優雅、具有表現力的代碼能夠使數據結構的學習變得很簡單。反之,如果接口設計得太復雜、邊界情況不注意處理或者不注意效率的話,就會出現各種bug:內存泄漏、野指針、遞歸棧溢出……
因此,建議學習的時候多參考優秀的教材。我用的是鄧俊輝大大的數據結構C++版(這里安利一下學堂在線上的配套MOOC數據結構(2015秋)-學堂在線慕課(MOOC)平台)和Weiss的數據結構與算法分析。這兩本書的主頁上都提供了源代碼下載。
分析時間和空間復雜度、優點、缺點以及適用於解決的問題
2.如何將數據結構和算法應用到實際之中
鏈接: https://www.zhihu.com/question/20066988
3.Coursera(或其他慕課平台)上有哪些算法數據結構相關的課程值得推薦
鏈接: https://www.zhihu.com/question/49606500
4.學習算法與數據結構,有什么比較好的mooc推薦么,還有比較好的書籍推薦?
鏈接: https://www.zhihu.com/question/34605825
5.有哪些類似帶花樹的冷門算法或數據結構?
鏈接: https://www.zhihu.com/question/40028742
6.有哪些算法或數據結構是ACM大牛們在比賽中創造出來的?
鏈接: https://www.zhihu.com/question/26547156
7.你所讀的計算機科學方向,有哪些不錯的講義(Notes)?
鏈接: https://www.zhihu.com/question/38300204
8.哪本《數據結構與算法》最好?
鏈接: https://www.zhihu.com/question/21628833
9.用淺顯易懂的方式來講解數據結構和算法
鏈接: https://zhuanlan.zhihu.com/DataStructureAndAlgorithm
10. 我的數據結構之路
鏈接: https://zhuanlan.zhihu.com/data-structure
11. 算法數據結構中有那些奇技淫巧
鏈接: https://www.zhihu.com/question/33776070