This is just a collection of algorithms I wanted to implement in order to improve my understanding. They are NOT optimized and probably shouldn't be used in production code.
To run all unit tests:
python3 -m unittest discover test
Recursive implementation of the quick sort algorithm.
To run tests:
python3 quicksort.py
Recursive implementation of the merge sort algorithm.
To run tests:
python3 mergesort.py
Simple hashtable implementation
A helper class used to implement the heap.
To run tests:
python3 autoresizelist.py
Implementation of a heap.
To run tests:
python3 heap.py
Backtracking solution to the n-queens problem (just finds the first one).
To run:
python3 nqueens.py
To run tests:
python3 -m unittest discover test --pattern="*nqueens*"
Various combinatoric functions like permutations and combinations.
To run:
python3 combinatorics.py