ShakerSortBei ShakerSort handelt es sich um eine Variante von BubbleSort. Dabei wird der Bubblesort-Algorithmus so modifiziert, dass die
Richtung des Arraydurchlaufs (innere Schleife) bei jeder Iteration (äußere Schleife) wechselt.
Zunächst wird also von links nach rechts, danach von rechts nach links usw.
"gebubbelt", in der Hoffnung, dass die Bubbles dann schneller ihre Position erreichen. Implementation
static int[] shakerSort(int[] zahlen){ boolean getauscht; int r = zahlen.length - 1; int l = 0; do { getauscht = false; for(int j=l; j<r; j++) { if(zahlen[j]>zahlen[j+1]){ swap(j, j+1, zahlen); getauscht = true; } } //zeigeZahlenfolge(zahlen); r--; if(l<r && getauscht){ getauscht = false; for(int j=r; j>l; j--) { if(zahlen[j]<zahlen[j-1]){ swap(j, j-1, zahlen); getauscht = true; } } //zeigeZahlenfolge(zahlen); l++; } } while(l<r && getauscht); }
» drucken: pdf | html
|