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);

Kapcsolódó cikkek