Viewing file: sort2.c (1.18 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Simple test program: bubble sort of a fixed table. */ /* This demonstrates some of the compiler's common-subexpression*/ /* elimination capabilities. For example, inspect the code */ /* generated for procedure Sort_array. See the Programmer's */ /* Guide for how to request an assembly listing on your host. */
typedef unsigned char boolean;
void Sort_array(); int Tab[100];
main () { int I,J,K,L;
for (L = 0; L < 1000; L++) { /* Initialize the table that will be sorted. */ K = 0; for (I = 9; I >= 0; I--) for (J = I*10; J < (I+1)*10; J++) Tab[K++] = J&1 ? J+1 : J-1;
/* Print_array(); */ Sort_array(Tab,99); /* Sort it. */ /* Print_array(); */ } return 0; }
void Sort_array(Tab,Last) int Tab[]; int Last; { boolean Swap; int Temp,I; do { Swap = 0; for (I = 0; I<Last; I++) if (Tab[I] > Tab[I+1]) { Temp = Tab[I]; Tab[I] = Tab[I+1]; Tab[I+1] = Temp; Swap = 1; } } while (Swap); }
void Print_array() { int I,J; /*printf("\nArray Contents:\n");*/ for (I=0; I<=9; I++) { /*printf("%5d:",10*I); */ for (J=0; J<=9; J++); /*printf("%5d",Tab[10*I+J]); */ /* printf("\n");*/ } }
|