arrays/qsort-application.c - Anvendelse af qsort til sortering af et heltals array. | Lektion 9 - slide 19 : 30 Program 1 |
#include <stdio.h> #include <stdlib.h> void prn_array(char* s, const int a[], int n); 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; if (*ipi1 < *ipi2) result = -1; else if (*ipi1 > *ipi2) result = 1; else result = 0; return result; } 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'); }