| 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');
}