我是靠谱客的博主 唠叨芹菜,最近开发中收集的这篇文章主要介绍使用C++/C qsort 标准库对结构体进行快速排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++标准快速排序库qsort进行结构体快速排序

代码如下

复制代码
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 typedef struct
 4 {
 5     int date;
 6     int value;
 7 }X_S;
 8 
 9 /* a->z */
10 int cmpfunA2Z(const void * a, const void * b)
11 {
12     X_S * p1 = (X_S *)a;
13     X_S * p2 = (X_S *)b;
14 
15     return p1->value > p2->value;
16 }
17 
18 /* z -> a */
19 int cmpfunZ2A(const void * a, const void * b)
20 {
21     X_S * p1 = (X_S *)a;
22     X_S * p2 = (X_S *)b;
23 
24     return p1->value < p2->value;
25 }
26 
27 int quickSortOfCpp()
28 {
29     X_S Xlist[100];
30     int Ilist[100];
31     int i = 0;
32     for(i = 0; i < 100; i++)
33     {
34         Xlist[i].date = i+1;
35         double t = (double)i - 50.3;
36         Xlist[i].value = (int)(t * t + 5.6);
37     }
38 
39     for(i = 0; i < 100; i++)
40     {
41         printf("num : %3d, value : %4dn", Xlist[i].date, Xlist[i].value);
42     }
43 
44     qsort(Xlist, 100, sizeof(X_S), cmpfunA2Z);
45     printf("33[034m-------------sorted-------------33[0mn");
46 
47     for(i = 0; i < 100; i++)
48     {
49         printf("num : %3d, value : %4dn", Xlist[i].date, Xlist[i].value);
50     }
51 
52     return 0;
53 }
54 
55 int main(int argc, char * argv[])
56 {
57     quickSortOfCpp();
58 
59     return 0;
60 }
复制代码

运行结果如下

 1. 排序前结构体数组情况

复制代码
num :   1, value : 2535
num :   2, value : 2436
num :   3, value : 2338
num :   4, value : 2242
num :   5, value : 2149
num :   6, value : 2057
num :   7, value : 1968
num :   8, value : 1880
num :   9, value : 1794
num :  10, value : 1711
num :  11, value : 1629
num :  12, value : 1550
num :  13, value : 1472
num :  14, value : 1396
num :  15, value : 1323
num :  16, value : 1251
num :  17, value : 1182
num :  18, value : 1114
num :  19, value : 1048
num :  20, value :  985
num :  21, value :  923
num :  22, value :  864
num :  23, value :  806
num :  24, value :  750
num :  25, value :  697
num :  26, value :  645
num :  27, value :  596
num :  28, value :  548
num :  29, value :  502
num :  30, value :  459
num :  31, value :  417
num :  32, value :  378
num :  33, value :  340
num :  34, value :  304
num :  35, value :  271
num :  36, value :  239
num :  37, value :  210
num :  38, value :  182
num :  39, value :  156
num :  40, value :  133
num :  41, value :  111
num :  42, value :   92
num :  43, value :   74
num :  44, value :   58
num :  45, value :   45
num :  46, value :   33
num :  47, value :   24
num :  48, value :   16
num :  49, value :   10
num :  50, value :    7
num :  51, value :    5
num :  52, value :    6
num :  53, value :    8
num :  54, value :   12
num :  55, value :   19
num :  56, value :   27
num :  57, value :   38
num :  58, value :   50
num :  59, value :   64
num :  60, value :   81
num :  61, value :   99
num :  62, value :  120
num :  63, value :  142
num :  64, value :  166
num :  65, value :  193
num :  66, value :  221
num :  67, value :  252
num :  68, value :  284
num :  69, value :  318
num :  70, value :  355
num :  71, value :  393
num :  72, value :  434
num :  73, value :  476
num :  74, value :  520
num :  75, value :  567
num :  76, value :  615
num :  77, value :  666
num :  78, value :  718
num :  79, value :  772
num :  80, value :  829
num :  81, value :  887
num :  82, value :  948
num :  83, value : 1010
num :  84, value : 1074
num :  85, value : 1141
num :  86, value : 1209
num :  87, value : 1280
num :  88, value : 1352
num :  89, value : 1426
num :  90, value : 1503
num :  91, value : 1581
num :  92, value : 1662
num :  93, value : 1744
num :  94, value : 1828
num :  95, value : 1915
num :  96, value : 2003
num :  97, value : 2094
num :  98, value : 2186
num :  99, value : 2280
num : 100, value : 2377
复制代码

  2. 排序后结构体数组情况

复制代码
num :  51, value :    5
num :  52, value :    6
num :  50, value :    7
num :  53, value :    8
num :  49, value :   10
num :  54, value :   12
num :  48, value :   16
num :  55, value :   19
num :  47, value :   24
num :  56, value :   27
num :  46, value :   33
num :  57, value :   38
num :  45, value :   45
num :  58, value :   50
num :  44, value :   58
num :  59, value :   64
num :  43, value :   74
num :  60, value :   81
num :  42, value :   92
num :  61, value :   99
num :  41, value :  111
num :  62, value :  120
num :  40, value :  133
num :  63, value :  142
num :  39, value :  156
num :  64, value :  166
num :  38, value :  182
num :  65, value :  193
num :  37, value :  210
num :  66, value :  221
num :  36, value :  239
num :  67, value :  252
num :  35, value :  271
num :  68, value :  284
num :  34, value :  304
num :  69, value :  318
num :  33, value :  340
num :  70, value :  355
num :  32, value :  378
num :  71, value :  393
num :  31, value :  417
num :  72, value :  434
num :  30, value :  459
num :  73, value :  476
num :  29, value :  502
num :  74, value :  520
num :  28, value :  548
num :  75, value :  567
num :  27, value :  596
num :  76, value :  615
num :  26, value :  645
num :  77, value :  666
num :  25, value :  697
num :  78, value :  718
num :  24, value :  750
num :  79, value :  772
num :  23, value :  806
num :  80, value :  829
num :  22, value :  864
num :  81, value :  887
num :  21, value :  923
num :  82, value :  948
num :  20, value :  985
num :  83, value : 1010
num :  19, value : 1048
num :  84, value : 1074
num :  18, value : 1114
num :  85, value : 1141
num :  17, value : 1182
num :  86, value : 1209
num :  16, value : 1251
num :  87, value : 1280
num :  15, value : 1323
num :  88, value : 1352
num :  14, value : 1396
num :  89, value : 1426
num :  13, value : 1472
num :  90, value : 1503
num :  12, value : 1550
num :  91, value : 1581
num :  11, value : 1629
num :  92, value : 1662
num :  10, value : 1711
num :  93, value : 1744
num :   9, value : 1794
num :  94, value : 1828
num :   8, value : 1880
num :  95, value : 1915
num :   7, value : 1968
num :  96, value : 2003
num :   6, value : 2057
num :  97, value : 2094
num :   5, value : 2149
num :  98, value : 2186
num :   4, value : 2242
num :  99, value : 2280
num :   3, value : 2338
num : 100, value : 2377
num :   2, value : 2436
num :   1, value : 2535
复制代码

 


本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4112196.html,如需转载请自行联系原作者

最后

以上就是唠叨芹菜为你收集整理的使用C++/C qsort 标准库对结构体进行快速排序的全部内容,希望文章能够帮你解决使用C++/C qsort 标准库对结构体进行快速排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部