As long as all the threads are running before the first one finishes... You would have to measure the speed of spawning new threads in your runtime, and adjust the linear timestep dt * x (where x is the element) for that, e.g. for 2 1 1 1 1 1 1 1 1 1 0 you would have to make the waiting time for 2 be 2 * dt + epsilon, where epsilon is a function of the elements position in the list to be sorted.
Even if you did that perfectly, it is still only a probabilistic sorting algorithm, with potential for error.
Even if you did that perfectly, it is still only a probabilistic sorting algorithm, with potential for error.