#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
void print_array(double arr[], int len);
int compare(const void *a, const void *b);
double rand_double(double min, double max);
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;
}
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]);
}
/*
run:
7.75 4.46 8.58 6.33 8.61 5.07 4.60 2.31 9.84 3.18
2.31 3.18 4.46 4.60 5.07 6.33 7.75 8.58 8.61 9.84
0.75 0.38 0.84 0.59 0.85 0.45 0.40 0.15 0.98 0.24
0.15 0.24 0.38 0.40 0.45 0.59 0.75 0.84 0.85 0.98
*/