#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
double rand_double(double min, double max) {
double range = (max - min);
double div = RAND_MAX / range;
return min + (rand() / div);
}
int compare(const void *a, const void *b) {
double aa = *(double*)a, bb = *(double*)b;
if (aa > bb) return -1;
if (aa < bb) return 1;
return 0;
}
void print_array(double arr[], int len) {
int i;
for (i = 0; i < len; i++) printf("%6.2f", arr[i]);
}
int main(void)
{
int i;
double arr[N] = { 0.0 };
srand(time(NULL));
for (i = 0; i < N; i++)
arr[i] = rand_double(1, 10);
print_array(arr, N);
printf("\n");
qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), compare);
print_array(arr, N);
printf("\n\n");
srand(time(NULL));
for (i = 0; i < N; i++)
arr[i] = rand_double(0, 1);
print_array(arr, N);
printf("\n");
qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), compare);
print_array(arr, N);
printf("\n");
return 0;
}
/*
run:
2.34 9.97 1.59 7.99 1.96 6.21 7.56 3.16 4.06 1.68
9.97 7.99 7.56 6.21 4.06 3.16 2.34 1.96 1.68 1.59
0.15 1.00 0.07 0.78 0.11 0.58 0.73 0.24 0.34 0.08
1.00 0.78 0.73 0.58 0.34 0.24 0.15 0.11 0.08 0.07
*/