Initial implementation of binary heap algorithm
Made iterative implementation more concise
quick sort with 3 way partitioning to prevent O(n^2) runtime when dealing with data with many duplicate entries.