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] Inc (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 majd
QuickSort (balra, j);
ha i majd
QuickSort (i, jobb);
Vége;

Kapcsolódó cikkek