algorithms
algorithms copied to clipboard
Algorithms & Data structures in C++.
Algorithms & Data Structures in C++
目标 ( goal ) :
- 经典的算法实现
(classical algorithms implementations) - 服务器端
(based on linux/gcc) - 正确,易于使用和改造, 一个头文件一个算法,并附带一个demo.
(correct! and ease of use, one .header file per algorithm)
约定 ( Convention ):
- 一个算法用一个.h文件表示放到include下. ( one .header file per algorithm. )
- 算法演示的demo程序放到src下. ( one demo per algorithm. )
- 程序正确通过后,请发起Pull Requests,代码被验证后入库,并在README中发布新算法实现。 (Please Use Fork+Pull Requests !!! Correctness is the most important!)
- TAB = 4 space. set ts=4 in vim
- Graph的输出格式为 Graphviz Dot格式.
(the output format of the graph is in dot of graphviz.)
eg:
已实现 ( Implemented ):
Name | File |
---|---|
Array shuffle | https://github.com/xtaci/algorithms/blob/master/include/shuffle.h |
Prime test(trial division) | https://github.com/xtaci/algorithms/blob/master/include/prime.h |
Prime test(Miller-Rabin's method) | https://github.com/xtaci/algorithms/blob/master/include/prime.h |
2D Array | https://github.com/xtaci/algorithms/blob/master/include/2darray.h |
Arbitrary Integer | https://github.com/xtaci/algorithms/blob/master/include/integer.h |
Linear congruential generator | https://github.com/xtaci/algorithms/blob/master/include/random.h |
Maximum subarray problem | https://github.com/xtaci/algorithms/blob/master/include/max_subarray.h |
Bit-Set | https://github.com/xtaci/algorithms/blob/master/include/bitset.h |
Queue | https://github.com/xtaci/algorithms/blob/master/include/queue.h |
Stack | https://github.com/xtaci/algorithms/blob/master/include/stack.h |
Binary Heap | https://github.com/xtaci/algorithms/blob/master/include/heap.h |
Fibonacci Heap | https://github.com/xtaci/algorithms/blob/master/include/fib-heap.h |
Priority Queue (list based) | https://github.com/xtaci/algorithms/blob/master/include/priority_queue.h |
Bubble sort | https://github.com/xtaci/algorithms/blob/master/include/bubble_sort.h |
Selection sort | https://github.com/xtaci/algorithms/blob/master/include/selection_sort.h |
Insertion sort | https://github.com/xtaci/algorithms/blob/master/include/insertion_sort.h |
Shell sort | https://github.com/xtaci/algorithms/blob/master/include/shell_sort.h |
Radix sort | https://github.com/xtaci/algorithms/blob/master/include/radix_sort.h |
Quicksort | https://github.com/xtaci/algorithms/blob/master/include/quick_sort.h |
Merge sort | https://github.com/xtaci/algorithms/blob/master/include/merge_sort.h |
Double linked list | https://github.com/xtaci/algorithms/blob/master/include/double_linked_list.h |
Skip list | https://github.com/xtaci/algorithms/blob/master/include/skiplist.h |
Largest common sequence | https://github.com/xtaci/algorithms/blob/master/include/lcs.h |
Binary search tree | https://github.com/xtaci/algorithms/blob/master/include/binary_search_tree.h |
AVL tree | https://github.com/xtaci/algorithms/blob/master/include/avl.h |
Dynamic order statistics | https://github.com/xtaci/algorithms/blob/master/include/dos_tree.h |
Red-black tree | https://github.com/xtaci/algorithms/blob/master/include/rbtree.h |
Interval tree | https://github.com/xtaci/algorithms/blob/master/include/interval_tree.h |
Prefix Tree(Trie) | https://github.com/xtaci/algorithms/blob/master/include/trie.h |
Suffix Tree | https://github.com/xtaci/algorithms/blob/master/include/suffix_tree.h |
B-Tree | https://github.com/xtaci/algorithms/blob/master/include/btree.h |
Suffix Array | https://github.com/xtaci/algorithms/blob/master/include/suffix_array.h |
Hash by multiplication | https://github.com/xtaci/algorithms/blob/master/include/hash_multi.h |
Hash table | https://github.com/xtaci/algorithms/blob/master/include/hash_table.h |
Universal hash function | https://github.com/xtaci/algorithms/blob/master/include/universal_hash.h |
Perfect hash | https://github.com/xtaci/algorithms/blob/master/include/perfect_hash.h |
Java's string hash | https://github.com/xtaci/algorithms/blob/master/include/hash_string.h |
FNV-1a string hash | https://github.com/xtaci/algorithms/blob/master/include/hash_string.h |
SimHash | https://github.com/xtaci/algorithms/blob/master/include/simhash.h |
Bloom Filter | https://github.com/xtaci/algorithms/blob/master/include/bloom_filter.h |
SHA-1 Message Digest Algorithm | https://github.com/xtaci/algorithms/blob/master/include/sha1.h |
MD5 | https://github.com/xtaci/algorithms/blob/master/include/md5.h |
Base64 | https://github.com/xtaci/algorithms/blob/master/include/base64.h |
Strongly Connected Components(SCC) | https://github.com/xtaci/algorithms/blob/master/include/scc.h |
Prim's minimum spanning tree | https://github.com/xtaci/algorithms/blob/master/include/prim_mst.h |
Kruskal MST | https://github.com/xtaci/algorithms/blob/master/include/kruskal_mst.h |
Breadth First Search | https://github.com/xtaci/algorithms/blob/master/include/graph_search.h |
Depth First Search | https://github.com/xtaci/algorithms/blob/master/include/graph_search.h |
Dijkstra's algorithm | https://github.com/xtaci/algorithms/blob/master/include/dijkstra.h |
Bellman-Ford algorithm | https://github.com/xtaci/algorithms/blob/master/include/bellman_ford.h |
Edmonds-Karp Maximal Flow | https://github.com/xtaci/algorithms/blob/master/include/edmonds_karp.h |
Push–Relabel algorithm | https://github.com/xtaci/algorithms/blob/master/include/relabel_to_front.h |
Huffman Coding | https://github.com/xtaci/algorithms/blob/master/include/huffman.h |
Word segementation | https://github.com/xtaci/algorithms/blob/master/include/word_seg.h |
A* algorithm | https://github.com/xtaci/algorithms/blob/master/include/astar.h |
K-Means | https://github.com/xtaci/algorithms/blob/master/include/k-means.h |
Knuth–Morris–Pratt algorithm | https://github.com/xtaci/algorithms/blob/master/include/kmp.h |
Disjoint-Set | https://github.com/xtaci/algorithms/blob/master/include/disjoint-set.h |
8-Queen Problem | https://github.com/xtaci/algorithms/blob/master/include/8queen.h |
Palindrome | https://github.com/xtaci/algorithms/blob/master/include/palindrome.h |
LCA using Binary Lifting | https://github.com/xtaci/algorithms/blob/master/include/LCA.h |
贡献者 ( Contributors ) :
Samana: for heavy work of MSVC compatability
wycg1984: for K-Means
xmuliang: for HeapSort, Kruskal MST
wyh267: for base64, LRU, bubble sort, selection sort
ZhangYou0122: Push-Relabel algorithm, Suffix Tree
UsingtcNower: Suffix Array
afernandez90: AVL trees