Sow, зачем? в этот
Нужно просто разумно организовать обмен элементов в массиве.
Вообще, алгоритм quicksort выполняет на каждом шаге похожую задачу: в одну часть массива перебрасываются все числа, большие некоторого выбранного значения, а в другую - меньшие (после чего к обеим половинам применяется то же действие - рекурсивно).
Поступает quicksort примерно так: двигается сразу в двух направлениях - от начала массива и от конца. Допустим, нужно в первой части получить элементы, большие заданного числа. Тогда:
1. мы двигаемся по массиву от начала к концу, пока не найдём число, не удовлетворяющее этому условию (т.е. оно <=).
2. Теперь начинаем движение от конца массива к началу, пока не найдём число, >= заданного.
3. Сравниваем позиции: если найденное "большее" левее "меньшего", то прекращаем сортировку. В противном случае производим обмен значений двух найденных элементов массива и возвращаемся к пункту 1 (счётчики/указатели, естественно, не сбрасываем, а продолжаем с тех позиций, где остановились)