Program QuickSort; Uses Crt; Const N = 100; VMax = 100; Type Index = 1..N; Mutato = 0 {=sehova; 1 }..N+1; Intervallum = Record eleje, vege: Mutato End; Var verem : Array [1..VMax] of Intervallum; vm : Mutato; {veremmutat˘} tomb : Array [Index] of Integer; szakasz: Intervallum; Const KezdoSzakasz : Intervallum=(eleje: 1; vege: N); {----------------------- VeremTˇpus ------------------------} Procedure Verembe(mit: Intervallum); Begin Inc(vm); verem[vm]:=mit End; {verembe} Procedure Verembol(Var mibe: Intervallum); Begin mibe:=verem[vm]; Dec(vm) End; {Verembol} Procedure VeremInic; Begin vm:=0 End; {VeremInic} Function UresVerem: Boolean; Begin UresVerem:=(vm=0) End; {UresVerem} {----------------------- Adminisztr ci˘ ------------------------} Procedure TombInic; Var i : Integer; c : Char; Begin LowVideo; Window(16,2,55,15); Writeln('A rendezetlen vektor:'); For i:=1 to N do Begin tomb[i]:=Random(N); Write(tomb[i]:4) End; c:=ReadKey; End; {TombInic} Procedure TombKiir; Var i : Integer; c : Char; Begin HighVideo; Window(16,14,55,25); Writeln('A rendezett vektor:'); For i:=1 to N do Begin Write(tomb[i]:4) End; c:=ReadKey; End; {TombKiir} {--------------------------- L‚nyeg ----------------------------} Function Uresszakasz(sz: Intervallum): Boolean; Begin UresSzakasz:=(sz.vege-sz.eleje)<1 End; {UresSzakasz} Procedure Szetvalogat(sz: Intervallum; Var k: Index); Begin {...} End; {Szetvalogat} Procedure rekQS(sz: Intervallum); Begin {...} End; {rekQS} Procedure felRekQS(sz: Intervallum); Begin {...} End; {felRekQS} Procedure iterQS(sz: Intervallum); Begin {...} End; {iterQS} Begin ClrScr; TombInic; rekQS(kezdoSzakasz); TombKiir; ClrScr; TombInic; felRekQS(kezdoSzakasz); TombKiir; ClrScr; TombInic; iterQS(kezdoSzakasz); TombKiir; End. Procedure Szetvalogat(sz: Intervallum; Var k: Index); Var seged : Integer; bal, jobb : Index; Begin bal:=sz.eleje; jobb:=sz.vege; seged:=tomb[bal]; While bal=seged) do Dec(jobb); If bal