Hello,
In this example, if I put a 0, the sorting is wrong which must be standard c
After sorting the list is:
0 -5.5e-06 3 25 56 88 100
-5.5e-06 2 3 25 56 88 100
#include <stdio.h>
#include <stdlib.h>
double values[] = { 88, 56, 100, 0.0, 25, 3, -0.55e-5 };
double values2 [] = { 88, 56, 100, 2, 25, 3, -0.55e-5 };
int dcmpfunc (const void * a, const void * b) {
return ( *(double*)a - *(double*)b );
}
int main () {
int n;
double *val2 = (double*) malloc (7 * sizeof(double)) ;
double *val = (double*) malloc (7 * sizeof(double)) ;
for (n = 0 ; n < 7 ; n++) val [n] = values [n] ;
for (n = 0 ; n < 7 ; n++) val2 [n] = values2 [n] ;
qsort (val, 7, sizeof (double), dcmpfunc);
qsort (val2, 7, sizeof (double), dcmpfunc);
printf ("\nAfter sorting the list is: \n") ;
for (n = 0 ; n < 7; n++ ) printf("%g ", val [n]); printf ("\n") ;
for (n = 0 ; n < 7; n++ ) printf("%g ", val2 [n]); printf ("\n") ;
return(0);
}
===========================================================================
Patrick DUPRÉ | | email: pdupre(a)gmx.com
Laboratoire interdisciplinaire Carnot de Bourgogne
9 Avenue Alain Savary, BP 47870, 21078 DIJON Cedex FRANCE
Tel: +33 (0)380395988
===========================================================================