programex6_4; {швидке сортування - метод Хоара}
uses crt;
vari.n:integer; {кількість елементів масиву та іх індекси}
а:аrrау[1..10] of integer; {вихідний масив}
procedurequicksort(left.right:integer);
vari.j,k.x.tmp:integer; {розділовий елемент та допоміжні змінні}
Begin
i:=left; {ліва границя підмасиву }
j:=right; {права границя підмасиву }
x:=a[(left+right) div2]; {значення бар'єрного елемента}
writeln('left=',left,' right=',right,' x=',x);
repeat {розділити масив на підмасиви}
whilea[i]<x do i:=i+l; {визначити індекси елементів.}
whilea[j]>x do j:=j-l; {що обмінюються }
ifi<=j then
begin{обміняти елементи місцями }
tmp:=a[i];
a[i]i-a[j];
a[j]:=tmp;
i:=i+l;
j:=j-l;
{виведення проміжних результатів}
fork:=l to n do
write(a[k],' ');
writeln;
end;
untili>j;
ifleft<j then
quicksort(left,j); {впорядкувати лівий підмасив} if i<right then
quicksorts, right); {впорядкувати правий підмасив} end:
Begin
clrscr;
randomize;{ініціалізація генератора псевдовипадкових чисел}
writeln(‘quick sort’);
writeln(‘enter number of the components (<=10)’);
readln(n);
fori;=l to n do {згенерувати масив }
a[i]:=random(30);
writeln('generated array');
fori:=l to n do {вивести згенерований масив }
write(a[i],' ');
writeln;
writeln(‘sort process’);
quicksort(l,n);
writeln('sorted array');
for i:=l to n do {вивести відсортований масив}
write(a[i].' ');
writeln;
readln;
End.