/** * int-example * An example of using our generic sort routine using arrays of * integer pointers. */ // +---------+-------------------------------------------------------- // | Headers | // +---------+ #include // For printf and such #include "sort.h" // For sort // +-------------+---------------------------------------------------- // | Comparators | // +-------------+ /** * Compare two integer pointers in the natural way. */ int ip_compare (const int *x, const int *y) { if (*x < *y) return -1; else if (*x == *y) return 0; else return 1; } // ip_compare // +---------+-------------------------------------------------------- // | Helpers | // +---------+ /** * print_ips (ips, size) * Print an array of integer pointers. */ void print_ips (int *ips[], int size) { int i; for (i = 0; i < size; i++) printf ("%d ", *(ips[i])); printf ("\n"); } // print_ips /** * example (ints, size) * Do an example. */ void example (int ints[], int size) { int i; int *ips[size]; for (i = 0; i < size; i++) ips[i] = &ints[i]; printf ("Original: "); print_ips (ips, size); sort (ips, 0, size-1, ip_compare); printf ("Sorted: "); print_ips (ips, size); printf ("\n"); } // example // +------+----------------------------------------------------------- // | Main | // +------+ int main () { int ints0[] = { 5, 4, 3, 2, 1 }; example (ints0, sizeof(ints0) / sizeof(int)); int ints1[] = { 1, 4, 7, 10, 9, 6, 3, 2, 5, 8 }; example (ints1, sizeof(ints1) / sizeof(int)); return 0; } // main