Добавить комментарий
![]() |
Быстрая сортировка |
type TAI = array of integer; ... procedure QuickSort(var A: TAI); procedure QSort(ALeftIdx, ARightIdx: Integer); var l, r : Integer; mv :integer; begin if (ARightIdx - ALeftIdx) <=1 then exit; mv := A[(ARightIdx + ALeftIdx) div 2]; l := ALeftIdx; r := ARightIdx -1; while A[l] < mv do inc(l); while A[r] > mv do dec(r); if l<=r then begin swap(A[l],A[r]); inc(l); dec(r); end; if r > ALeftIdx then QSort(ALeftIdx, r+1); if l < ARightIdx then QSort(l, ARightIdx); end; begin if Length(A) > 1 then QSort(0, Length(A)); end;
Метки: