首页 > 代码库 > 使用C++/C qsort 标准库对结构体进行快速排序
使用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 = http://www.mamicode.com/(int)(t * t + 5.6);37 }38 39 for(i = 0; i < 100; i++)40 {41 printf("num : %3d, value : %4d\n", Xlist[i].date, Xlist[i].value);42 }43 44 qsort(Xlist, 100, sizeof(X_S), cmpfunA2Z);45 printf("\033[034m-------------sorted-------------\033[0m\n");46 47 for(i = 0; i < 100; i++)48 {49 printf("num : %3d, value : %4d\n", 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 : 2535num : 2, value : 2436num : 3, value : 2338num : 4, value : 2242num : 5, value : 2149num : 6, value : 2057num : 7, value : 1968num : 8, value : 1880num : 9, value : 1794num : 10, value : 1711num : 11, value : 1629num : 12, value : 1550num : 13, value : 1472num : 14, value : 1396num : 15, value : 1323num : 16, value : 1251num : 17, value : 1182num : 18, value : 1114num : 19, value : 1048num : 20, value : 985num : 21, value : 923num : 22, value : 864num : 23, value : 806num : 24, value : 750num : 25, value : 697num : 26, value : 645num : 27, value : 596num : 28, value : 548num : 29, value : 502num : 30, value : 459num : 31, value : 417num : 32, value : 378num : 33, value : 340num : 34, value : 304num : 35, value : 271num : 36, value : 239num : 37, value : 210num : 38, value : 182num : 39, value : 156num : 40, value : 133num : 41, value : 111num : 42, value : 92num : 43, value : 74num : 44, value : 58num : 45, value : 45num : 46, value : 33num : 47, value : 24num : 48, value : 16num : 49, value : 10num : 50, value : 7num : 51, value : 5num : 52, value : 6num : 53, value : 8num : 54, value : 12num : 55, value : 19num : 56, value : 27num : 57, value : 38num : 58, value : 50num : 59, value : 64num : 60, value : 81num : 61, value : 99num : 62, value : 120num : 63, value : 142num : 64, value : 166num : 65, value : 193num : 66, value : 221num : 67, value : 252num : 68, value : 284num : 69, value : 318num : 70, value : 355num : 71, value : 393num : 72, value : 434num : 73, value : 476num : 74, value : 520num : 75, value : 567num : 76, value : 615num : 77, value : 666num : 78, value : 718num : 79, value : 772num : 80, value : 829num : 81, value : 887num : 82, value : 948num : 83, value : 1010num : 84, value : 1074num : 85, value : 1141num : 86, value : 1209num : 87, value : 1280num : 88, value : 1352num : 89, value : 1426num : 90, value : 1503num : 91, value : 1581num : 92, value : 1662num : 93, value : 1744num : 94, value : 1828num : 95, value : 1915num : 96, value : 2003num : 97, value : 2094num : 98, value : 2186num : 99, value : 2280num : 100, value : 2377
2. 排序后结构体数组情况
num : 51, value : 5num : 52, value : 6num : 50, value : 7num : 53, value : 8num : 49, value : 10num : 54, value : 12num : 48, value : 16num : 55, value : 19num : 47, value : 24num : 56, value : 27num : 46, value : 33num : 57, value : 38num : 45, value : 45num : 58, value : 50num : 44, value : 58num : 59, value : 64num : 43, value : 74num : 60, value : 81num : 42, value : 92num : 61, value : 99num : 41, value : 111num : 62, value : 120num : 40, value : 133num : 63, value : 142num : 39, value : 156num : 64, value : 166num : 38, value : 182num : 65, value : 193num : 37, value : 210num : 66, value : 221num : 36, value : 239num : 67, value : 252num : 35, value : 271num : 68, value : 284num : 34, value : 304num : 69, value : 318num : 33, value : 340num : 70, value : 355num : 32, value : 378num : 71, value : 393num : 31, value : 417num : 72, value : 434num : 30, value : 459num : 73, value : 476num : 29, value : 502num : 74, value : 520num : 28, value : 548num : 75, value : 567num : 27, value : 596num : 76, value : 615num : 26, value : 645num : 77, value : 666num : 25, value : 697num : 78, value : 718num : 24, value : 750num : 79, value : 772num : 23, value : 806num : 80, value : 829num : 22, value : 864num : 81, value : 887num : 21, value : 923num : 82, value : 948num : 20, value : 985num : 83, value : 1010num : 19, value : 1048num : 84, value : 1074num : 18, value : 1114num : 85, value : 1141num : 17, value : 1182num : 86, value : 1209num : 16, value : 1251num : 87, value : 1280num : 15, value : 1323num : 88, value : 1352num : 14, value : 1396num : 89, value : 1426num : 13, value : 1472num : 90, value : 1503num : 12, value : 1550num : 91, value : 1581num : 11, value : 1629num : 92, value : 1662num : 10, value : 1711num : 93, value : 1744num : 9, value : 1794num : 94, value : 1828num : 8, value : 1880num : 95, value : 1915num : 7, value : 1968num : 96, value : 2003num : 6, value : 2057num : 97, value : 2094num : 5, value : 2149num : 98, value : 2186num : 4, value : 2242num : 99, value : 2280num : 3, value : 2338num : 100, value : 2377num : 2, value : 2436num : 1, value : 2535
作者:风波
使用C++/C qsort 标准库对结构体进行快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。