in-place quicksort