Die Implementierung von Shell Sort
?Download shell_sort.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <stdio.h> #define MAX 8 void shell_sort(int *liste); void output(int *liste); int main(int argc, char* argv[]) { int a[] = {15, 9, 12, 1, 6, 13, 3, 4}; output(a); shell_sort(a); return 0; } void output(int *liste) { int i=0; for(i=0; i<MAX; i++) { printf("[%2d] ",liste[i]); } printf("\n"); } void shell_sort(int *liste) { int i=0; int j=0; int k=0; int h=0; int t=0; const int anz_schritte = 4; int schritte[] = {9, 6, 3, 1}; for(k=0; k < anz_schritte; k++) { h = schritte[k]; printf("Schrittweite: %2d\n",h); for (i=h; i < MAX; i++) { j = i; t = liste[j]; while (j >= h && liste[j-h]>t) { printf(" Vergleich: [%2d] > [%2d] \n",liste[j-h],t); liste[j] = liste[j-h]; j = j-h; } liste[j]=t; } printf(" Aufbau: "); output(liste); } } |