Procedure QuickSort(numbers : Array of Integer; size : Integer);
Begin
QSort(numbers, 0, size-1);
End;
Procedure QSort(numbers : Array of Integer;
left : Integer; right : Integer);
Var pivot, l_ptr, r_ptr : Integer;
Begin
l_ptr := left;
r_ptr := right;
pivot := nummbers[left];
While (left < right)
Begin
While ((numbers[right] >= pivot) AND (left < right))
right := right - 1;
If (left <> right) then
Begin
numbers[left] := numbers[right];
left := left + 1;
End;
While ((numbers[left] <= pivot) AND (left < right))
left := left + 1;
If (left <> right) then
Begin
numbers[right] := numbers[left];
right := right - 1;
End;
End;
numbers[left] := pivot;
pivot := left;
left := l_ptr;
right := r_ptr;
If (left < pivot) then
QSort(numbers, left, pivot-1);
If (right > pivot) then
QSort(numbers, pivot+1, right);
End;