I’ve been talking with my colleague Jakub Skoczen. He’s insisting that functional implementations of quicksort, which make and return new arrays at each level of recursion, must surely be much slower than imperative implementations that modify an array in place.
And I can see his point.