arrays/qsort-application-2.c - En variant af anvendelse af qsort - med int_compare funktion. | Lektion 9 - slide 19 : 30 Program 2 |
#include <stdio.h> #include <stdlib.h> void prn_array(char* s, const int a[], int n); int int_compare(const int i1, const int i2); int element_compare(const void *ip1, const void *ip2); int main(void){ int a[] = {7, 3, 66, 3, -5, 22, -77, 2}; int n; n = sizeof(a) / sizeof(int); /* Notice how the size of a is found */ prn_array("Before", a, n); qsort(a, n, sizeof(int), element_compare); prn_array(" After", a, n); putchar('\n'); return 0; } int element_compare(const void *ip1, const void *ip2){ int result; int *ipi1 = (int *)ip1, /* Cast parameters to pointers to int */ *ipi2 = (int *) ip2; return int_compare(*ipi1, *ipi2); } int int_compare(const int i1, const int i2){ if (i1 < i2) return -1; else if (i1 > i2) return 1; else return 0; } void prn_array(char* s , const int a[] , int n){ int i; printf("\n %s sorting:", s); for (i = 0; i < n; ++i) printf("%5d", a[i]); putchar('\n'); }