apply cutoff, insertion sort and optional merge over mergesort basic top down impl
bottom up merge sort using queues