/* Uebungsblatt 3 Aufgabe 4 / 10 Punkte * shaker - Sortieralgorithmus */ #include#include #define MAXLENGTH 3000 int shakersort ( int tosort[], int num){ int i, dummy, endarray, anfarray; boolean getauscht = 1; anfarray = 0; endarray = num; while ( getauscht ) { getauscht = 0; /* Durchlauf von Anfang bis Ende */ for (i = anfarray; i < endarray; i++) { if ( tosort[i] > tosort[i+1] ) { getauscht = 1; /* tauschen der zwei Feldinhalte */ dummy = tosort[i+1]; tosort[i+1] = tosort[i]; tosort[i] = dummy; } } endarray -= 1; if (getauscht) { getauscht = 0; /* Durchlauf von Ende bis Anfang */ for (i = endarray; i > anfarray; i--) { if ( tosort[i] < tosort[i-1] ) { getauscht = 1; /* tauschen der zwei Feldinhalte */ dummy = tosort[i-1]; tosort[i-1] = tosort[i]; tosort[i] = dummy; } } } anfarray += 1; } return 0; } int main( void ){ int intarray [MAXLENGTH]; int i, index = 0, erg; for ( i= 0; i < MAXLENGTH; i++) { intarray[i] = 0; } while( (scanf(" %d" , &i ) != EOF ) && (index < MAXLENGTH ) ) { /* Standardeingabe in Array der vorgegeben Laenge einlesen */ intarray[index] = i; index++; } /* wenn die maximale Laenge erreicht ist, bzw. die Eingabe zuende, * den Array sortieren */ erg = shakersort(intarray,index-1); /* Ausgabe des Arrays */ i = 0; while( i < index){ printf(" %ld \t", intarray[i]); i++; } return 0; }
Martina Maier, 11. November 1998