sorting: bottom-up mergesort