various sorting algorithms and possibly data structures