The first thing we need to do is choose the pivot element. There are a few ways in which we can do this. The simplest one is selecting the first value of the array (the leftmost value). However, studies show that this is not a good selection if the array is almost sorted, causing the worst behavior of the algorithm. Another approach is selecting a random value of the array or the middle value.
Now, let's take a look at the partition method:
function partition(array, left, right, compareFn) { const pivot = array[Math.floor((right + left) / 2)]; // {8} let i = left; // {9} let j = right; // {10} while (i <= j) { // {11} while (compareFn(array[i], pivot) === Compare.LESS_THAN) { // {12} i++; } while (compareFn(array[j], ...