Professional Documents
Culture Documents
Egyszer beillesztses rendezs rendezst gy vgezzk, mintha krtyznnk, s keznkbe egyesvel vennnk fel az asztalrl a kiosztott lapokat. Az ppen felvett lapnak megkeressk a keznkben lv, mr rendezett sorozatban a helyt gy, hogy kzben a nla nagyobbakat egy hellyel elcssztatjuk, vgl beillesztjk a felvett lapot a neki megfelel helyre. N elem esetn a vgs sorrend kialaktshoz N-1 menetre van szksg. Eredeti: 1. menet utn: 2. menet utn: 3. menet utn: 64 56 8 8 56 8 42 64 8 42 56 64 42 42 56 64 5 5 5 5 12 12 12 12 16 16 16 16 40 40 40 40 3 3 3 3 31 31 31 31 47 47 47 47 22 22 22 22 24 24 24 24 33 33 33 33 7 7 7 7 46 46 46 46
5 5 3
8 42 56 64 12 16 40 8 12 42 56 64 16 40 5 7
3 31 47 22 24 33 3 31 47 22 24 33
7 46 7 46
8 12 16 22 24 31 33 40 42 46 47 56 64 Javtott Algoritmus: Eljrs for i:=2 to n do begin j:=i-1; x:=a[i]; while (j>0) and (a[j]>x) do begin a[j+1]:=a[j]; j:=j-1; end; if j<>i-1 then a[j+1]:=x; Eljrs vge
Algoritmus: Eljrs Ciklus J=2-tl N-ig I:=J-1 ; A:=A(J) Ciklus amg I>0 s A<A(I) A(I+1):=A(I) ; I:=I-1 Ciklus vge A(I+1):=A Ciklus vge Eljrs vge.
Quicksort Igen gyors s hatkony rendezsrl van sz, amelynek alapja az, hogy egymstl tvol lv elemeket hasonltunk ssze egymssal, s szksg esetn felcserljk azokat. Vlasszuk ki az A vektor els elemt, s vegyk ki a vektorbl. A helye res marad. A vektor vgrl indulva keresnk egy ennl kisebb elemet. Ha tallunk, azt betesszk a felszabadult helyre. Most a lyuk ott keletkezik, ahonnan ezt az elemet kivettk. Ide a vektor elejrl keresnk egy, a kivlasztott elemnl nagyobb elemet. Ha tallunk, beillesztjk, ha nem, akkor oda ppen a kivlasztott elem illik. 64 64 64 __ 46 46 56 56 56 56 8 8 8 8 42 42 42 42 5 5 5 5 12 12 12 12 16 16 16 16 40 40 40 40 3 3 3 3 31 31 31 31 47 47 47 47 22 22 22 22 24 24 24 24 33 33 33 33 7 7 7 7 46 46 __ 64
A konkrt pldban nem sikerlt a vektort nem sikerlt kt rszre vgni, mert a 64 ppen a legnagyobb elem. A kvetkez lpsben a 46-ot emeljk ki a vektor elejrl, s htulrl haladva keressnk nla kisebb elemet, s gy tovbb. 46 46 46 46 46 46 __ 7 7 7 7 7 7 56 56 __ 33 33 33 33 8 8 8 8 8 8 8 42 42 42 42 42 42 42 5 5 5 5 5 5 5 12 12 12 12 12 12 12 16 16 16 16 16 16 16 40 40 40 40 40 40 40 3 3 3 3 3 3 3 31 31 31 31 31 31 31 47 47 47 47 __ 24 24 22 22 22 22 22 22 22 24 24 24 24 24 __ 46 33 33 33 __ 47 47 47 7 __ 56 56 56 56 56 64 64 64 64 64 64 64
A 46 most a vgleges helyre kerlt. Tle balra a nla kisebb, jobbra a nla nagyobb elemek helyezkednek el. Az eljrst az gy kettvgott vektor egyik rsznek elemeivel a fent lert mdon folytatjuk tovbb. Algoritmus: Eljrs Quick(AH, FH) Sztvlogat(AH, FH, E) Ha AH<E-1 akkor Quick(AH, E-1) Ha E+1<FH akkor Quck(E+1, FH) Eljrs vge A sztvlogat eljrs a vektor elemeit gy rendezi t, hogy az E-edik elem el kerlnek a nla kisebbek, mg pedig a nagyobbak.
Teljes Algoritmus Eljrs gyorsrendezs (n, A) Eljrs rendez(also, felso) I:=also; J:=felso; X:=A[(also+felso) div 2]; {n elemszm, A - tmb} {az intervallumok szlei} {a kzps elem, div egsz oszts}
Ciklus Ciklus amg A[I]<x I:=I+1 ciklus vge {ellrl} Ciklus amg A[J]>x J:=J-1 ciklus vge {htulrl} Ha I<=J akkor csere(A[I];A[J]); I:=I+1; J:=J-1; Amg I>J Ha also<J akkor rendez(also,J); {addig ll fenn, amg a klnbsgk} Ha I<felso akkor rendez(I, felso); {legalbb 1. 1-hosszra mr nem hvjuk meg} Eljrs vge Begin End; Megjegyzsek: A kzps elem mindig ms, amg a kt hatr ssze nem r. Az algoritmus sebessge fgg az elemek rendezettsgtl Akkor a leglassabb, ha a kzps elem a legkisebb vagy a legnagyobb Akkor igazn gyors, ha nagy mret tmbbel dolgozik Nem ismeri fel, ha a tmb rendezett, de ekkor is gyors. A rekurzv jrahvs megtrtnik. A kis mret tmbkre azrt nem j, mert a rekurzi lasst Hibrid megolds: Ha a tmbmret lecskken mondjuk 100 elemre, akkor egy hagyomnyos rendez algoritmust hasznlunk. Tipp: a quicksort algoritmus lefutsa eltt egyszeren ellenrizhetjk, hogy a tmb neme rendezett mr. Rendez(1,N); {a fprogram}