Implementations of many common algorithms and basic data structures, all in Python.
Currently a work-in-progress as an educational tool for myself, but I'm hoping others will find it useful as well.
##Sorting Algorithms:
- Insertion sort
- Selection sort
- Merge sort
- Quick sort
- Bubble sort
- Shell sort
- Comb sort
- Bucket sort
- Heap sort
- Radix sort (integers only)
- Counting sort (integers only)
##String Matching Algorithms:
- Rabin-Karp
##Basic Data Structures:
- Linked list
- Doubly linked list
- Skip list (implemented with an array of linked lists)
- FIFO queue (implemented as singly and doubly linked list, circular buffer, or dict)
- Stack (implemented as singly linked list)
- Circular buffer
- Binary search tree (implemented with pointers or as an array)
- Trie
- Suffix tree (implemented as a Trie)
- Priority queue (implemented as BST or defaultdict)
- Bounded height priority queue (implemented with an array of linked lists)
- Max heaps and min heaps (implemented as BST)
- Union-find structure (implemented as dict or with pointers)
- Hash Table (simple to efficient versions)
- StringBuffer (faster string concatenation)
- Bit vector
##Graph Algorithms:
- Create regular graphs
- BFS
- Dijkstra (with and without edge distances)
- Erdos-Renyi model graphs
- SmallWorld model graphs
- Barabasi-Albert model graphs
##Supporting tools:
- Hash-functions