欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第 16 章 C 预处理器和 C 库(qsort() 函数)

程序员文章站 2022-07-02 20:45:44
1 /* 2 qsorter.c -- 用 qsort() 排序一组数字 3 */ 4 5 #include 6 #include //提供函数 rand() 原型 7 8 #define NUM 40 9 10 void fillarray(double ......
第 16 章 C 预处理器和 C 库(qsort() 函数)
 1 /*----------------------------------------
 2     qsorter.c -- 用 qsort() 排序一组数字
 3 ----------------------------------------*/
 4 
 5 #include <stdio.h>
 6 #include <stdlib.h>        //提供函数 rand() 原型
 7 
 8 #define NUM 40
 9 
10 void fillarray(double ar[], int n);
11 void showarray(const double ar[], int n);
12 int mycomp(const void *p1, const void *p2);
13 
14 int main()
15 {
16     double vals[NUM];
17 
18     fillarray(vals, NUM);
19     puts("Random list:");
20     showarray(vals, NUM);
21 
22     qsort(vals, NUM, sizeof(double), mycomp);
23     puts("\nSorted list:");
24     showarray(vals, NUM);
25 
26     return 0;
27 }
28 
29 void fillarray(double ar[], int n)
30 {
31     for (int index = 0; index != n; ++index)
32         ar[index] = (double)(rand()) / ((double)(rand()) + 0.1);
33 }
34 
35 void showarray(const double ar[], int n)
36 {
37     int index = 0;
38 
39     for (; index != n; ++index)
40     {
41         printf("%9.4f ", ar[index]);
42         if (index % 6 == 5) putchar('\n');
43     }
44 
45     if (index % 6 != 0) putchar('\n');
46 }
47 
48 int mycomp(const void *p1, const void *p2)
49 {
50     const double *a1 = (double*)p1;
51     const double *a2 = (double*)p2;
52 
53     if (*a1 > *a2)
54         return 1;
55     else if (*a1 == *a2)
56         return 0;
57     else
58         return -1;
59 }
qsorter.c

第 16 章 C 预处理器和 C 库(qsort() 函数)