Процедура "Быстрой сортировки" - QuickSort

procedure qSort(nStart, nEnd: integer);
var L, R, c, X: integer;
begin
  if nStart >= nEnd then Exit;
  L:= nStart; R:= nEnd;
  X:= A[(L+R) div 2]; { или X:= A[L+random(R-L+1)] }
  while L <= R do begin { разделение }
    while A[L] <  X do L:= L + 1;
    while A[R] >  X do R:= R - 1;
    if L <= R then begin
      c:= A[L]; A[L]:= A[R]; A[R]:= c;
      L:= L+1; R:= R-1
    end
  end;
  qSort(nStart, R); { рекурсивные вызовы }
  qSort(L, nEnd)
end;

Рейтинг

Проблемы с госуслугами, медленный интернет или плохая связь? Напишите об этом — Минцифры поможет с решением