I understand how the divide part of the algorithm works and how it is meant to spread efforts.
What I don't understand is how would you merge blocks
. For the latter part it's easy enough as you just concatenate them ( although how do you know that? ) but for
 you have to rearrange their indexes for the order to be increasing.
How in software/pseudocode do you implement that step?