Rendezés

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:08-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|Prog1Sort}} A rendezési algoritmusok célja, hogy valamilyen kriterium szerint rendezze az elemeket. Például egy telefonkönyvet név sze…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


A rendezési algoritmusok célja, hogy valamilyen kriterium szerint rendezze az elemeket. Például egy telefonkönyvet név szerint szokás rendezni. De lehet éppen telefonszám vagy cím szerint is... Attól függően, hogy milyen adatstruktúrát rendezünk (sima mezei statikus tömb, dinamikus lista vagy valami egészen durván megkavart adatstruktúra), más és más algoritmusok előnyösek.

  • Amíg nem gyűlnek össze itt is leírások, addig egy link

(Wikipedia)

  • Összefoglaló a keresési és rendezési algoritmusokról

(AlgEl)


Tipikus vizsgafeladat:

Adott bemenetként egy _n_ elemű tömb. Rendezzük úgy, hogy a [math] 0, 2, 4, \dots, 2\left\lfloor\frac{n-1}{2}\right\rfloor, 2\left\lfloor\frac{n}{2}\right\rfloor-1, \dots, 5, 3, 1 [/math] indexű elemei növekvő sorrendben legyenek.

Megoldás:

void sort(int n, int *a) {
	int i, j;
	for (i=0; i<n-1; i++)
		for (j=i+1; j<n; j++)  <font color="black">// i<j</font>
			<font color="black">// csere, ha (növekvő sorrendben állnak) XOR (jó a növekvő sorrend)</font>
			if (a[i]<a[j] ^ i%2==0) {
				int swap=a[i]; a[i]=a[j]; a[j]=swap;
			}
}

-- Peti - 2006.12.30.