/**********************************************************
* *
* 用qsort()函数进行排序。 *
* *
**********************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 11
enum when{before,after};
typedef enum when when;
int cmp(const void *vp,const void *vq);
void fill_array(double *a,int n);
void prn_array(when val,double *a,int n);
int main(void)
{
double a[N];
fill_array(a,N);
prn_array(before,a,N);
qsort(a,N,sizeof(double),cmp); ///在qsort函数体中指向数组a的元素的指针作为参数传递给cmp函数
prn_array(after,a,N);
return 0;
}
int cmp(const void *vp,const void *vq)
{
const double *p=vp;
const double *q=vq;
double diff=*p - *q;
return ((diff>=0.0)?((diff>0.0)?-1:0):+1);
}
void fill_array(double *a,int n)
{
int i;
srand(time(NULL));
for(i=0;i<n;++i)
a[i]=(rand()%1001)/10.0; ///rand()%1001)产生一个位于0到1000之间的值,由于除以10.0,所以赋值给a[i]的值位于0-100之间
}
void prn_array(when val,double *a,int n)
{
int i;
printf("%s\n%s%s\n",
"---",
((val==before)?"Before":"After"),"sorting:");
for(i=0;i<n;i++)
{
if(i%6==0)
putchar('\n');
printf("%10.1f",a[i]);
}
putchar('\n');
}