gitextract_c2bux98h/ ├── .gitignore ├── C01-The-Role-of-Algorithms-in-Computing/ │ ├── 1.1.md │ ├── 1.2.md │ └── problem.md ├── C02-Getting-Started/ │ ├── 2.1.md │ ├── 2.2.md │ ├── 2.3.md │ ├── exercise_code/ │ │ ├── Insertion_sort_with_binary_search.py │ │ ├── binary-search.py │ │ ├── inversions.cpp │ │ ├── inversions.py │ │ └── merge-sort.py │ └── problem.md ├── C03-Growth-of-Functions/ │ ├── 3.1.md │ ├── 3.2.md │ └── problem.md ├── C04-Recurrences/ │ ├── 4.1.md │ ├── 4.2.md │ ├── 4.3.md │ ├── 4.4.md │ ├── exercise_code/ │ │ ├── findIndex.py │ │ └── findMissing.py │ └── problem.md ├── C05-Probabilistic-Analysis-and-Randomized-Algorithms/ │ ├── 5.1.md │ ├── 5.2.md │ ├── 5.3.md │ ├── 5.4.md │ ├── myrandom.py │ └── problem.md ├── C06-Heapsort/ │ ├── 6.1.md │ ├── 6.2.md │ ├── 6.3.md │ ├── 6.4.md │ ├── 6.5.md │ ├── d-ary-heaps.cpp │ ├── heap.cpp │ ├── main.cpp │ ├── makefile │ ├── p_queue.cpp │ ├── p_queue.h │ ├── problem.md │ └── young.cpp ├── C07-Quicksort/ │ ├── 7.1.md │ ├── 7.2.md │ ├── 7.3.md │ ├── 7.4.md │ ├── exercise_code/ │ │ ├── fuzzy_sort.py │ │ ├── hoare.py │ │ ├── quickSortWithEqualElements.cpp │ │ ├── quicksort.py │ │ └── tailrecursive.py │ ├── problem.md │ ├── quicksort.py │ └── randomized-quicksort.py ├── C08-Sorting-in-Linear-Time/ │ ├── 8.1.md │ ├── 8.2.md │ ├── 8.3.md │ ├── 8.4.md │ ├── exercise_code/ │ │ ├── in_place_counting_sort.py │ │ ├── intergerQuery.cpp │ │ ├── radixSort.cpp │ │ └── water-jugs.py │ └── problem.md ├── C09-Medians-and-Order-Statistics/ │ ├── 9.1.md │ ├── 9.2.md │ ├── 9.3.md │ ├── exercise_code/ │ │ ├── k-close2median.py │ │ ├── k-quantile.py │ │ ├── randomized-select-iterative.cpp │ │ └── second-smallest.cpp │ ├── minmax.c │ ├── problem.md │ ├── problems/ │ │ ├── i-largest.cpp │ │ ├── i-largest.py │ │ └── weighted_median.py │ ├── randomized-select.cpp │ └── worst-case-linear-time.cpp ├── C10-Elementary-Data-Structures/ │ ├── 10.1.md │ ├── 10.2.md │ ├── 10.3.md │ ├── 10.4.md │ ├── README.md │ ├── exercise_code/ │ │ ├── af-obj.c │ │ ├── deque.cpp │ │ ├── deque.py │ │ ├── dict.cpp │ │ └── traversal.cpp │ └── problem.md ├── C11-Hash-Tables/ │ ├── 11.1.md │ ├── 11.2.md │ ├── 11.3.md │ ├── 11.4.md │ ├── 11.5.md │ ├── README.md │ └── problem.md ├── C12-Binary-Search-Trees/ │ ├── 12.1.md │ ├── 12.2.md │ ├── 12.3.md │ ├── 12.4.md │ ├── BSTree.h │ ├── main.cpp │ └── makefile ├── C13-Red-Black-Trees/ │ ├── 13.1.md │ ├── 13.2.md │ ├── 13.3.md │ ├── 13.4.md │ ├── problem.md │ ├── rbtree.c │ └── rbtree.cpp ├── C14-Augmenting-Data-Structures/ │ ├── 14.1.md │ ├── 14.2.md │ ├── 14.3.md │ ├── exercise_code/ │ │ ├── m-Josephus.cpp │ │ └── test │ └── problem.md ├── C15-Dynamic-Programming/ │ ├── 15.1.md │ ├── 15.2.md │ ├── 15.3.md │ ├── 15.4.md │ ├── 15.5.md │ ├── Assembly-line-sche.c │ ├── Matrix-chain-multiplication.c │ ├── lincrs.cpp │ ├── optimalBST.cpp │ └── rodcutting.cpp ├── C16-Greedy-Algorithms/ │ ├── 16.1.md │ ├── 16.2.md │ ├── 16.3.md │ └── huffman/ │ ├── BinaryStdIn.cpp │ ├── BinaryStdIn.h │ ├── BinaryStdOut.cpp │ ├── BinaryStdOut.h │ ├── HUFFMAN.cpp │ ├── HUFFMAN.h │ ├── binary_test/ │ │ ├── main.cpp │ │ └── makefile │ ├── binarystdin_test/ │ │ ├── main.cpp │ │ └── makefile │ ├── binarystdout_test/ │ │ ├── data │ │ ├── main.cpp │ │ └── makefile │ └── huffman_test/ │ ├── compressed │ ├── huffman_test_client.cpp │ └── makefile ├── C17-Amortized-Analysis/ │ ├── 17.1.md │ ├── 17.2.md │ ├── 17.3.md │ └── 17.4.md ├── C18-B-Trees/ │ ├── 18.1.md │ ├── 18.2.md │ ├── 18.3.md │ ├── btree.cpp │ └── btree.py ├── C19-Binomial-Heaps/ │ ├── 19.1.md │ ├── 19.2.md │ ├── BinomialHeap.h │ └── Main.cpp ├── C21-Data-Structures-for-Disjoint-Sets/ │ ├── 21.1.md │ ├── 21.2.md │ ├── 21.3.md │ ├── problem.md │ └── uf.cpp ├── C22-Elementary-Graph-Algorithms/ │ ├── 22.1.md │ ├── 22.2.md │ ├── 22.3.md │ ├── 22.4.md │ ├── 22.5.md │ ├── README.md │ ├── elementary_graph_algo.py │ ├── exercise_code/ │ │ └── EulerTour.cpp │ └── problem.md ├── C23-Minimum-Spanning-Trees/ │ ├── 23.1.md │ └── 23.2.md ├── C24-Single-Source-Shortest-Paths/ │ ├── 24.1.md │ ├── 24.2.md │ ├── 24.3.md │ ├── 24.4.md │ └── README.md ├── C25-All-Pairs-Shortest-Paths/ │ ├── 25.1.md │ ├── 25.2.md │ ├── 25.3.md │ ├── Floyd_Warshall.cpp │ └── README.md ├── C26-Flow-networks/ │ ├── 26.1.md │ ├── 26.2.md │ ├── 26.3.md │ └── maxflow/ │ ├── FlowEdge.cpp │ ├── FlowNetwork.cpp │ ├── FordFulkerson.cpp │ ├── input.txt │ ├── makefile │ ├── readme.md │ ├── testFlowEdge.cpp │ └── testFlowNetwork.cpp ├── C31-Number-Theoretic-Algorithms/ │ ├── 31.1.md │ ├── 31.2.md │ ├── 31.7.md │ ├── euclid.py │ ├── exercise_code/ │ │ ├── binary2decimal.py │ │ └── lcm.py │ └── extended_euclid.py ├── C32-String-Matching/ │ ├── 32.1.md │ ├── 32.2.md │ ├── 32.3.md │ ├── 32.4.md │ ├── BF.c │ ├── BM.c │ ├── FA.c │ ├── KMP.c │ ├── README.md │ ├── RK.c │ └── exercise_code/ │ └── str_spin.c ├── C33-Computational-Geometry/ │ ├── 33.1.md │ ├── Graham_Scan.py │ ├── exercise_code/ │ │ ├── area.cpp │ │ ├── colinear.cpp │ │ ├── convex_polygon.cpp │ │ ├── pointpolygon.cpp │ │ ├── polarCMP.cpp │ │ └── ray_intersection.cpp │ └── twoline.cpp ├── C35-Approximation-Algorithms/ │ ├── 35.1.md │ └── 35.2-5.md ├── LICENSE ├── README.md └── other/ ├── Karatsuba/ │ ├── Karatsuba.cpp │ ├── main.cpp │ └── makefile ├── segmentTree.cpp ├── stringSpilit.cpp └── trie.cpp