Implementations of various sorting algorithms