zoukankan      html  css  js  c++  java
  • 使用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 : %4d
    ", Xlist[i].date, Xlist[i].value);
    42     }
    43 
    44     qsort(Xlist, 100, sizeof(X_S), cmpfunA2Z);
    45     printf("33[034m-------------sorted-------------33[0m
    ");
    46 
    47     for(i = 0; i < 100; i++)
    48     {
    49         printf("num : %3d, value : %4d
    ", 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

    作者:风波

  • 相关阅读:
    C# 字符串转换值类型
    C#判断字符串为空
    c#转义字符
    python各种类型的转换
    mysql创建新用户及新用户不能本地登陆的问题
    数据探索的方法
    使用requests爬取猫眼电影TOP100榜单
    Python中的正则表达式教程
    Anaconda多版本Python管理以及TensorFlow版本的选择安装
    Xshell访问虚拟机内Linux
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4112196.html
Copyright © 2011-2022 走看看