# Preface - 前言
我在大學期間刷算法題的時候,對于一個題目經常是要么一看就會,要么想三天也做不出。
后來明白我并沒有真正理解算法,只會套用,題目稍微改變,就沒辦法搞定了。
我一邊刷題,一邊把各種算法源碼整理并歸類。可過半年之后再看這些,發現已經完全不認識了。
如果不真正理解,只看代碼很難搞清楚代碼到底在干什么。
將算法圖形化、公式化是最容易讓人理解的,可以從數學角度來準確的描述問題和解決過程。
這就形成了目前這本關于計算機算法的書,融合了文字、公式、插圖和C++源碼項目的復合體。
本書的每一章專門講一類問題,其中分多個小節,專講其中的一個分支或變種。每個問題都有講解和源碼。
后來NEWPLAN同學參加到這本書籍的編寫中,他添加了很多內容。
歡迎更多同學一起豐富該資料,增加更多專業領域的算法,提交merge request時盡量與書中前4章風格一致。
最后安利一下我的開源開發工具,極大的提高了我的工作效率,歡迎大家使用:
* [lin-vim](https://github.com/linrongbin16/lin-vim)
* [boostscript](https://github.com/linrongbin16/boostscript)
--------
西安交通大學計算機系 <br>
林榮彬 <br>
2014年2月16日 <br>
- Content 目錄
- Preface 前言
- Chapter-1 Sort 第1章 排序
- InsertSort 插入排序
- BubbleSort 冒泡排序
- QuickSort 快速排序
- MergeSort 歸并排序
- Chapter-2 Search 第2章 搜索
- BinarySearch 二分查找法(折半查找法)
- BruteForce 暴力枚舉
- Recursion 遞歸
- BreadthFirstSearch 廣度優先搜索
- BidirectionalBreadthSearch 雙向廣度搜索
- AStarSearch A*搜索
- DancingLink 舞蹈鏈
- Chapter-3 DataStructure 第3章 數據結構
- DisjointSet 并查集
- PrefixTree(TrieTree) 前綴樹
- LeftistTree(LeftistHeap) 左偏樹(左偏堆)
- SegmentTree 線段樹
- FenwickTree(BinaryIndexedTree) 樹狀數組
- BinarySearchTree 二叉查找樹
- AVLTree AVL平衡樹
- RedBlackTree 紅黑樹
- Chapter-4 DynamicProgramming 第4章 動態規劃
- Chapter-5 GraphTheory 第5章 圖論
- Chapter-6 Calculation 第6章 計算
- LargeNumber 大數字
- Exponentiation 求冪運算
- Chapter-7 CombinatorialMathematics 第7章 組合數學
- FullPermutation 全排列
- UniqueFullPermutation 唯一的全排列
- Combination 組合
- DuplicableCombination (元素)可重復的組合
- Subset 子集
- UniqueSubset 唯一的子集
- Permutation 排列
- PermutationGroup 置換群
- Catalan 卡特蘭數
- Chapter-8 NumberTheory 第8章 數論
- Sieve 篩選算法
- Euclid 歐幾里得
- EuclidExtension 歐幾里得擴展
- ModularLinearEquation 模線性方程
- ChineseRemainerTheorem 中國剩余定理
- ModularExponentiation 模冪運算
- Chapter-9 LinearAlgebra 第9章 線性代數
- Chapter-10 AnalyticGeometry 第10章 解析幾何
- Chapter-11 TextMatch 第11章 文本匹配
- SimpleMatch 簡單匹配
- AhoCorasickAutomata AC自動機
- KnuthMorrisPratt KMP匹配算法
- RabinKarp RabinKarp算法
- BoyerMoore BoyerMoore算法
- Chapter-12 GameTheory 第12章 博弈論
- BashGame 巴什博弈
- WythoffGame 威佐夫博弈
- NimGame 尼姆博弈