Tömb feltöltése véletlen számokkal és az elemek elrendezése gyorsrendezéssel, eljárások használatával (Gyorsrendezes.pas) program Gyorsrendezes; uses crt; var n:integer; a:array [1..300] of integer; Létrehozunk egy 300 elemű, a nevű, egész típusú tömböt. procedure cserel(mit,mire:integer); Cserélő eljárás, két egész típusú bemenő paraméterrel. var x:integer; begin x:=a[mit]; a[mit]:=a[mire]; a[mire]:=x; end; procedure feltolt; Véletlen számokkal feltöltjük az a tömböt. var i:integer; begin for i:=1 to n do begin a[i]:=trunc(90*random)+1; end; end; procedure kiir; A tömb elemeinek kiírása eljárással. var i:integer; begin for i:=1 to n do begin writeln(a[i]); end; end; function szetvalaszt(bal,jobb:integer):integer; Visszaad egy olyan pozíciót, melytől balra csak kisebb, jobbra csak nagyobb számok helyezkednek el. A függvény során addig cserélgetjük a tömbelemeket amíg a középponti elemhez képest ez a helyzet ki nem alakul. Végül egy egész típusú i változóban visszaadjuk a középponti elem helyzetét. var i,j,x:integer; begin i:=bal-1; j:=jobb; x:=a[jobb]; repeat repeat inc(i); Balról keresi az x-nél nagyobb elemet és eltárolja az indexét i-ben. until (a[i]>=x); repeat dec(j); if(a[j]<x) then break; until (j<=bal); Keresi jobbról a kisebb elemet majd eltárolja az indexét j-ben. if (i>=j) then break else cserel(i,j); Amíg a két index nem ugyanaz, vagy nincs átfedés, addig cserél, ha egyenlőek vagy van átfedés, akkor pedig break-kel kilépünk a ciklusból. until(false); cserel(i,jobb); Mivel van átfedés, ezért megvan a középponti elem, ekkor ezt helyezzük középre. szetvalaszt:=i; Visszaadja a középponti elem pozícióját. end; procedure gyorsrendez(bal,jobb:integer); var kozep:integer; begin if(bal<jobb) then begin kozep:=szetvalaszt(bal,jobb); kozep-be beletesszük a középponti elem indexét, majd rekurzívan meghívjuk a gyorsrendez eljárást a középponti elemtől balra és jobbra helyezkedő elemekre is. gyorsrendez(bal,kozep-1); gyorsrendez(kozep+1,jobb); end; end; BEGIN clrscr; write('n:= '); readln(n); feltolt; writeln('A szamok rendezes elott:'); kiir; writeln('A szamok rendezes utan:'); gyorsrendez(1,n); kiir; readkey; END.