Rendezés egyszerű csere módszerrel
Balról jobbra két szomszédos elemet egymás után hasonlít össze, és ha relatív helyzete nem felel meg a megadott megrendelési feltételnek, akkor helyeket változtat. Ezután vegye be a következő két szomszédos elemet, és így tovább a tömb vége felé.
Egy ilyen lépés után a tömb utolsó n-edik pozíciójánál egy maximális (vagy minimális) elem lesz (az "első" buborék "lebeg"). Mivel a maximális (vagy minimális) elem már az utolsó helyzetében van, a második átvezetési lépés az (n-1) -es elem előtt történik. És így tovább. Összes szükséges (n-1) lépés.
Feladat. A jegyzetfüzetben húzzon rajzot az önkényesen kiválasztott tömbnek tekintett algoritmus munkájáról.
Tekintsük a fenti algoritmust végrehajtó eljárást:
Eljárás Obmen (Var a. Array1);
var
i, j, f, g: egész szám;
kezdődik
az i: = n downto 2 do
j: = 1-től i-1-ig
ha a [j]> a [j + 1]
majd
kezdődik
f: = a [j];
a [j]: = a [j + 1];
a [j + 1]: = f;
végén;
Vége;
Feladat. Készítsen egy programot az egydimenziós tömb rendezésére a figyelembe vett módszer szerint.
Vegye fontolóra a rekurzió használatát egy algoritmus szerkesztéséhez egy tömbértékek rendezéséhez.
Az algoritmus az alábbiak szerint valósul meg: a tömb bizonyos szegmensében a közép (közép) értéket választjuk ki; A szegmens bal oldalán lévő elemek, amelyek meghaladják a központi értéket, jobbra fordulnak, és fordítva. A következő lépés (amelyre ugyanaz az eljárás rekurzív hívásait használják), az algoritmus megismétlődik a szegmens mindkét részéhez.
Tekintse meg a növekvő értéket a Massiv tömb sorrendjében a Left..Right index tartományban.
Eljárás QuickSort (Bal, Jobb egész szám, Massive .Array1);
var
i, j, x, y. integer;
kezdődik
i: = balra;
j: = Jobb;
x: = Massiv [(bal + jobb) div 2];<>
ismétlés
míg Massiv [i]
míg Massiv [j]> x nem
Dec (j);
ha i<=j
majd
kezdődik
y: = Massiv [i];
Massiv [i]: = Massiv [j];
Massiv [j]: = y;
Inc (i);
Dec (j);
végén;
amíg i> j;
ha balra
QuickSort (balra, j);
ha i
QuickSort (i, jobb);
Vége;