Koktélrendezés
A Wikipédiából, a szabad enciklopédiából
A koktélrendezés (cocktail sort) algoritmus egy tömb elemeinek sorba rendezésére. A buborékrendezés tökéletesített változata, mely két irányból megy végig a tömbön. Minimálisan bonyolultabb a buborékrendezésnél, de stabil marad, ugyanakkor kiküszöböli annak egyik problémáját, miszerint a nagy elemek gyorsan felemelkednek a helyükre (innen a „buborék” név), de a rossz helyen lévő kicsi elemek csak lassan süllyednek a helyükre.
A legrosszabb esetben itt is O(n²) műveletre van szükség, de ha a lista majdnem rendezett az elején, a műveletek száma közelebb van O(n)-hez mint a buborékrendezés esetén.
Példakód [szerkesztés]
C# forráskód koktélrendezésre:
static void CocktailSort(int[] a, int n) { int begin = 0; int end = n - 1; bool swapped; do { swapped = false; for (int i = begin; i < end; i++) { if (a[i] > a[i + 1]) { Swap(ref a[i], ref a[i + 1]); swapped = true; } } end--; if (!swapped) break; swapped = false; for (int i = end; i > begin; i--) { if (a[i] < a[i - 1]) { Swap(ref a[i], ref a[i - 1]); swapped = true; } } begin++; } while (swapped); }

