K
kurzon
Быстрая сортировка
Как рекурсивно вызвать?
Пожалуста исправте ошибки?
Как рекурсивно вызвать?
Код:
static class QuickSorting
{
public static void Sort<T>(T[] array, Comparison<T> comparison)
{
int i = 0, j = array.Length; // поставить указатели на исходные места
T temp, p;
p = array[array.Length >> 1]; // центральный элемент
// процедура разделения
do
{
while (comparison(array[i],p)>0) i++;
while (comparison(array[j],p)>0) j--;
if (i <= j)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++; j--;
}
} while (i <= j);
// рекурсивные вызовы, если есть, что сортировать
if (j > 0) Sort<T>(array, j);
if (array.Length > i) Sort<T>(array + i, array.Length - i);
}
}