/* File: genmain1.c First main program to test generic selection sort */ #include #include "genselect.h" /* Function prototypes */ int cmp_int (int *, int *) ; int cmp_int_rev (int *, int *) ; int cmp_double (double *, double *) ; /* Comparison Functions */ int cmp_int (int *ptr1, int *ptr2) { if (*ptr1 < *ptr2) return -1 ; if (*ptr1 > *ptr2) return 1 ; return 0 ; } int cmp_int_rev (int *ptr1, int *ptr2) { if (*ptr1 < *ptr2) return 1 ; if (*ptr1 > *ptr2) return -1 ; return 0 ; } int cmp_double (double *ptr1, double *ptr2) { if (*ptr1 < *ptr2) return -1 ; if (*ptr1 > *ptr2) return 1 ; return 0 ; } main() { int A[] = {5, 7, 9, 2, 1, 4, 3, 6, 8, 0} ; double B[] = {1.5, 1.7, 1.9, 1.2, 1.1, 1.4, 1.3, 1.6, 1.8, 1.0} ; int i ; printf("\nSort int in decreasing order:\n") ; SelectionSort(A, 10, sizeof(int), (CMP_FUNC) cmp_int) ; for (i = 0 ; i < 10 ; i++) { printf("A[%d] = %d\n", i, A[i]) ; } printf("\nSort int in increasing order:\n") ; SelectionSort(A, 10, sizeof(int), (CMP_FUNC) cmp_int_rev) ; for (i = 0 ; i < 10 ; i++) { printf("A[%d] = %d\n", i, A[i]) ; } printf("\nSort doubles in decreasing order:\n") ; SelectionSort(B, 10, sizeof(double), (CMP_FUNC) cmp_double) ; for (i = 0 ; i < 10 ; i++) { printf("B[%d] = %lf\n", i, B[i]) ; } }