Быстрая сортировка (QuickSort)

  Быстрая сортировка (QuickSort)


Программа к учебнику информатики для 10 класса К.Ю. Полякова и Е.А. Еремина. Глава 8. Программа № 44.

 Вход: нет

 Результат: После сортировки: 6 34 44 55 67 78 82


program selectSort;

const N = 7;

var A: array[1..N] of integer;

    i: integer;


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];       

          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;


begin

A[1]:=78; 

A[2]:=6; 

A[3]:=82; 

A[4]:=67;

A[5]:=55; 

A[6]:=44; 

A[7]:=34;

  writeln ( 'До сортировки:' );

  for i:=1 to N do

    write ( A[i], ' ' );


  qSort(1, N);  

  writeln;  

  writeln ( 'После сортировки: ' );

  for i:=1 to N do

    write ( A[i], ' ' );      

end.