Rendezési rétegek
A gyakorlatban gyakran alkalmaznak jobb válogatási módszereket, mivel a közvetlen módszerek viszonylag alacsony sebességgel rendelkeznek.
Az elemek kis hossza és / vagy az elemek speciális kezdeti elrendezése azonban a közvetlen módszerek is jó eredményt adnak.
Tekintsük a fő (közvetlen) válogatási módszerek elveit.
Tőzsdei válogatás (buborékos módszer)
A szomszédos elemek párjait x [k] és x [k +1] (k = 1,2, n -1) egymás után hasonlítjuk össze, és ha relatív pozíciójuk nem felel meg az adott állapotnak, átrendeződnek.
A maximális (minimum) elemet keresik és átmásolják a tömb végére. Ezt a módszert minden elemre alkalmazni kell, kivéve az utolsóat (már a helyén van), stb.
A módszer egy másik változata a talált elem átvitel a tömb elejére és a módszer utólagos alkalmazása minden elemre, kivéve az elsőt, és így tovább.
A tömb két részre van felosztva: rendezve és szétválogatva. A szétválogatott rész elemeit váltakozva válogatják és beillesztik a rendezett részbe oly módon, hogy ne zavarják meg az elemek megrendelését. Az elején csak egy első elemet fogadunk el, mint rendezett részt.
Az összehasonlítások számával minden módszer kvadrikus függést mutat a tömb hosszától
A feladatok száma szerint:
· A csere- és beillesztési módszerek kvadrikus függést mutatnak a tömb hosszával szemben
· A kiválasztási módszer az n * ln (n) sorrendű hozzárendelések számával rendelkezik,
A szakértők azt ajánlják, hogy szelekciós módszerrel komplex adatstruktúrákat rendezzenek, ha nagyszámú megbízást végeznek egy összehasonlításhoz.
Átlagosan a beillesztés és szelekció módjai megközelítőleg egyenértékűek és többször is (a tömb hosszától függően) jobbak, mint a csere módszere.
A jobb válogatási módszerek közé tartoznak például a következő algoritmusok:
ü válogatás, csökkenő távolságokkal rendelkező zárványokkal;
ü válogatás egy fa segítségével;
ü válogatás osztott (gyors sorrendű Hoare)
FELVÉTELI ALGORITMUSOK
Vannak olyan esetek, amikor a feladat subtasksokra oszlik, amelyek ugyanolyan szerkezettel rendelkeznek, mint a fő feladat.
Ilyen esetekben egy rekurzív mechanizmust használnak.
A szubrutin meghívásának módja, amelyben egy szubrutin hívja magát, rekurzívnak nevezik.
A rekurzusokat végrehajtó szubrutinok rekurzív alprogramok.
Magyarázzuk meg a rekurzív szubrutinok mechanizmusát a rekurzió használatának klasszikus példájával.
Egy szám tényleges számítása.
A végrehajtás módjának megválasztása indoklása.
Felhívjuk a figyelmet arra, hogy az N számtényezõje a következõképpen számítható ki:
Olyan algoritmust valósítunk meg, amely a rekurzív mechanizmust használja.
Mivel a szubrutin kiszámítja az értéket, megvalósítjuk egy függvény formájában.
funkció tény (n: byte). integer;
ha n = 0 akkor Tény: = 1
Egyéb Tény: = n * Tény (n-1);
A fent leírt mechanizmust gyakran közvetlen rekurziónak nevezik.
Van egy másik rekurzív mechanizmus - közvetett rekurzió.
A mechanizmus a következő helyzet megvalósítására szolgál.
Az első szubrutint a másodiknak nevezzük, még nem leírtuk.
Mutassuk meg a helyzetet egy példával.
A eljárás (var x: valós);