Выполнить сортировку массива по алгоритму QuickSort - Turbo Pascal

Формулировка задачи:

Дан массив чисел A. Выполнить сортировку массива по алгоритму QuickSort. В качестве разделяющего выбирать средний элемент отрезка. Показать состояние массива после каждой операции разделения. А=(36,25,27,83,50,90,52,86,49,18,37,8)

Код к задаче: «Выполнить сортировку массива по алгоритму QuickSort - Turbo Pascal»

textual
Const Max = 12;
Type mas = Array[1..Max] of Integer;
Const
  B : mas = (36,25,27,83,50,90,52,86,49,18,37,8);
Var A : mas;
 
Procedure ShowMas;
Var k : Longint;
Begin
  For k:=1 to Max do Write(A[k]:2,' '); Writeln;
End;
 
Procedure QuickSort(left,right : Longint);
Var m,l,r : Longint;
Begin
    l:=left; r:=right; m:=((r-l) div 2)+l;
    While (l<r) do
    Begin
      While (A[l]<A[m]) and (l<m) do Inc(l);
      While (A[r]>A[m]) and (r>m) do Dec(r);
      If (A[l]>A[r]) and (l<r) then
      Begin
        A[l]:=A[l]+A[r];
        A[r]:=A[l]-A[r];
        A[l]:=A[l]-A[r];
        If l=m then m:=r else
          If r=m then m:=l;
        ShowMas;
      End;
    End;
    m:=l; {l = r}
    If left<m-1 then QuickSort(left,m-1);
    If right>m+1 then QuickSort(m,right);
End;
 
Begin
  A:=B;
  ShowMas;
  QuickSort(1,Max);
End.

10   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ