Užité konstanty, typy a symboly: CONST MAX=10; VAR A:array[1..MAX]of integer; {Toto pole bude ve všech řadících metodách užito jako GLOBÁLNÍ proměnná} Symbol ":=:" budu užívat pro znázornění výměny dvou prvků. Pole vždy řadíme VZESTUPNĚ. ............................. Příklad číslo 6 - Quick-Sort Zadání: Vytvořte proceduru pro řazení metodou QUICK-SORT, a to jak rekurzivní, tak i nerekurzivní metodou. Teorie: Metoda rozdělí pole na již seřazené části a poté se rekurzivně aplikuje na takto vzniklé části. Rozdělení probíhá dle procedury ROZDĚL. Metoda není stabilní, nechová se přirozeně. Algoritmus: Procedure Rozdel(var i,j:integer;L,R:integer); var X:integer; begin {Rozdel} i:=L;j:=R; X:=A[(i+j)div 2]; {urcim delici hodnotu} repeat while A[i] < x do i:=i+1; while A[j] > x do j:=j-1; if i < = j then begin A[i]:=:A[j]; i:=i+1; j:=j-1; end; until i>j; end; {Rozdel} Procedure QuickSort(L,R:integer); var i,j:integer; begin {QuickSort} Rozdel(i,j,L,R); if L < j then QuickSort(L,j); {levy interval} if i < R then QuickSort(i,R); {pravy interval} end; {QuickSort} Procedure NonRecQuickSort(L,R:integer); var i,j:integer; begin {NonRecQuickSort} SInit(S); Push(S,L); Push(S,R); while not Sempty(S) do begin Top(S,R);Pop(S); Top(S,L); Pop(S); while L (j-L)then begin Push(S,i); Push(S,R); R:=j; end else begin Push(S,L); Push(S,j); L:=i; end; {else} end; {while} end; {while} end; {NonRecQuickSort} -------------------------------------------------------------