Почему не сортирует участок массива быстрая сортировка (QuickSort)???
template
void quickSort(T* a, int S, int F) {
long i=S, j=F, d, temp;
d = a[(F-S)/2+S];
do {
while (a[i]d) j--; ///
if (i <= j) {
temp=a[i]; a[i]=a[j]; a[j]=temp;
i++; j--;
}
} while (i <= j);
if (j>S) quickSort(a, S, j);
if (F>i) quickSort(a+i, S, F-i);
}
Я попытался реализовать Быструю сортировку для какого-то участка массива. Но почему-то у меня не получилось...
Допустим массив mass: 81 70 52 19 85 41 78 62 98 31.
Нужно отсортировать с S=4 элемента по F=9.
Вызываю метод: quickSort(mass, S-1, F-1);
Работа метода: 81, 70, 52, 19, 41, 85, 78, 62, 98, 31.
Прошу помочь!
P.S. Из-за странного отображения кода вместо
while (a[i]
Saymon_K: Насколько помню, там должно быть подряд два while по i и j, а у тебя непонятно по чему... Возможно, это парсер удалил кучу строк, потому что "while (a[i]d) j--; " это либо ноль итераций, либо вечный цикл.
В википедии глянь, там quicksort для кучи языков реализован.