當前位置:
首頁 >
数据结构和算法:全面的算法代码库
發布時間:2025/4/16
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
数据结构和算法:全面的算法代码库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文鏈接:https://github.com/Dev-XYS/Algorithms
Algorithms
本次README修訂為算法倉庫Algorithms的第100次commit,首先我們慶祝自2016年8月4日本倉庫建立以來Dev-XYS在算法學習方面取得的顯著進步!
這里有各種算法的C++代碼,任何人可以在自己的任何程序中使用,歡迎大家指出代碼中的錯誤以及有待改進的地方。
本倉庫內所有代碼的授權方式為Unlicense,大家如果使用我的代碼開發自己的軟件掙了大錢,或是參考我的代碼在NOI中得了金牌,我都會很高興的。使用這里的代碼之后,你可以自主選擇是否公開源代碼。總而言之,你可以把這里的代碼當作你自己寫的一樣,無論怎樣使用都是被允許的。但是,我不對本倉庫內代碼的正確性負責。大家要是使用我的代碼開發軟件而導致程序崩潰,或是參考我的代碼在考試時出錯,請不要向我抱怨。如果你愿意,遇到問題可以在Issues中提出來,我們共同解決。我們不贊成Pull Request,因為本倉庫主要儲存作者已經學習的算法,全部代碼均由作者本人負責維護與更新。
以下索引提供了本倉庫內算法的中文名,方便大家查找。更新可能有很長時間的延遲,不保證所有算法的名稱都在列表中出現。
Index
| AC自動機 | Aho-Corasick-Automation |
| 單源最短路徑(SPFA) | Bellman-Ford(Queue-Optimised) |
| 單源最短路徑(Bellman-Ford) | Bellman-Ford |
| 使用Edmonds-Karp進行二分圖匹配 | Bigrpah-Matching(Edmonds-Karp) |
| 普通的二叉搜索樹 | Binary-Search-Tree |
| 廣度優先搜索 | Breadth-First-Search |
| 冒泡排序 | Bubble-Sort |
| 桶排序 | Bucket-Sort |
| 組合數的遞推求解 | Combination(Recursion) |
| 枚舉組合 | Combination |
| 基本的復數類 | Complex-Number |
| 割點 | Cut-Vertex |
| 深度優先搜索 | Depth-First-Search |
| 堆優化的Dijkstra算法 | Dijkstra(Heap-Optimised) |
| 并查集 | Disjoint-Set-Union |
| 最大流Edmonds-Karp算法 | Edmonds-Karp |
| 歐拉函數 | Euler’s-Totient-Function |
| 有向圖的歐拉回路 | Eulerian-Tour(Digraph) |
| 拓展歐幾里得算法 | Extended-Euclid |
| 簡單的快速冪 | Fast-Exponentiation |
| 樹狀數組 | Fenwick-Tree |
| 所有結點對之間的最短路徑(Floyd) | Floyd-Warshall |
| 凸包算法(Graham掃描法) | Graham-Scan |
| 輾轉相除法求最大公約數 | Greatest-Common-Divisor |
| 堆排序 | Heap-Sort |
| ISAP算法 | Improved-Shortest-Augmenting-Path(Naive) |
| 插入排序 | Insertion-Sort |
| 字符串匹配(KMP) | Knuth-Morris-Pratt |
| 最小生成樹(Kruskal) | Kruskal |
| 最近公共祖先(Tarjan) | Least-Common-Ancestor(Tarjan) |
| 使用后綴數組求解最長公共子串 | Longest-Common-Substring |
| 最長上升子序列(n·log(n)) | Longest-Increasing-Subsequence(n·log(n)) |
| 倍增法求最近公共祖先 | Lowest-Common-Ancestor(Doubling) |
| 樸素的矩陣乘法 | Matrix-Multiplication(Naive) |
| 歸并排序 | Merge-Sort |
| 最小堆 | Min-Heap |
| 乘法逆元 | Modular-Multiplicative-Inverse |
| 僅支持單點修改的可持久化線段樹(維護區間和值) | Persistent-Segment-Tree(Sum) |
| 試除法素數測試 | Prime-Check(Naive) |
| 線性的素數篩法 | Prime-Sieve(Linear) |
| 隊列的基本操作 | Queue |
| 快速排序的優化版本 | Quick-Sort(Extra-Optimised) |
| 快速排序的隨機化版本 | Quick-Sort(Randomized) |
| 快速排序 | Quick-Sort |
| 使用向量叉積判斷兩個有向線段的時針關系 | Segment-Direction |
| 線段樹維護區間最大值 | Segment-Tree(Maximum) |
| 線段樹維護區間最小值 | Segment-Tree(Minimum) |
| 線段樹維護區間和值 | Segment-Tree(Sum) |
| 普通的選擇算法 | Selection |
| Eratosthenes素數篩法 | Sieve-of-Erotosthenes |
| 指針版的單向鏈表 | Singly-Linked-List(Pointer) |
| 跳表 | Skip-List |
| ST表 | Sparse-Table |
| 伸展樹 | Splay |
| 博弈論SG函數 | Sprague-Grundy |
| 棧的基本操作 | Stack |
| 遞推法求解無符號第一類斯特林數 | Stirling-Number(Cycle,Unsigned,Recursion) |
| 遞推法求解第二類斯特林數 | Stirling-Number(Subset,Recursion) |
| 倍增法求解后綴數組 | Suffix-Array(Doubling) |
| 倍增法求解后綴數組(附帶Height數組) | Suffix-Array-with-Height(Doubling) |
| 使用Tarjan算法求解強連通分量 | Tarjan(Strongly-Connected-Components) |
| 數組版的字典樹 | Trie(Array) |
| 指針版的字典樹 | Trie(Pointer) |
總結
以上是生活随笔為你收集整理的数据结构和算法:全面的算法代码库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android面试:Java相关
- 下一篇: 15道使用频率极高的基础算法题