Tilbage til slide -- Tastaturgenvej: 'u'  forrige -- Tastaturgenvej: 'p'  næste -- Tastaturgenvej: 'n'          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');
}