Добавить комментарий
![]() |
Медленная сортировка |
Разделим массив пополам, рекурсивно отсортируем каждую половину. Сравним крайние правые(наибольшие) элементы в каждой половине, при необходимости, обменяем. Теперь максимальный элемент гарантировано самый правый. Рекурсивно отсортируем оставшийся диапазон без правого элемента...
procedure SlowSort(var A: TAI); procedure Slow(Left, Right: integer); var mid : integer; begin if Left >= Right then Exit; mid := (Left + Right) div 2; Slow(Left, mid); Slow(mid + 1, Right); if A[mid] > A[Right] then swap(A[mid], A[Right]); Slow(Left, Right - 1); end; begin Slow(Low(A), High(A)); end;
Очевидно, это один из непрактичных вариантов сортировки.