Изменения
→Улучшенная быстрая сортировка
quicksort(a, l, i - 1)
quicksort(a, i + 1, r)
Вообще, можно применять любые эвристики по выбору опорного элемента. Например, в стандартной реализации в Java в качестве разделяющего выбирается средний из 7 элементов, равномерно распределённых по массиву.