PSRS Summary
Step 1: O(k) - Divide data into segments.
Step 2: O(n log2(n/k)) - Sort data segments.
Step 3: O(2k2) - Sample sorted data segments.
Step 4: O(2k2 log2(2k2)) - Sort data sample.
Step 5: O(k) - Choose pivots from sorted data sample.
Step 6: O(k2 log2(n/k)) - Partition sorted data segments.
Step 7: O(k2) - Compute result partition sizes.
Step 8: O(n log2(k)) - Merge data into result partitions.
Almost all the time is in steps 2 and 8.
Steps 3 - 5 increase likelihood of good pivot choice.
O(nk) version of step 8 would be more simple.