摘要:本文主要向大家介绍了如何使用VC编程的库函数中的快速排序函数,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
本文主要向大家介绍了如何使用VC编程的库函数中的快速排序函数,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
函数原型:
void qsort(void *base,size_t num,size_t width,
int (__cdecl *compare )(const void *, const void *) );
第一个是数组地址,第二是数组大小,第三个是数组中每个元素的字节数,最后一个是个函数指针,表示如何比较数组中的元素。
头文件 #include <stdlib.h>
下面分别就int等整数数据,double等浮点数据,结构体和类,按指定方式这四种情况进行讲解。
实例1、对int等整数数据进行排序
复制代码代码如下: int cmp(const void *x, const void *y){ return *(int*)x - *(int*)y;}qsort(a, MAXN, sizeof(a[0]), cmp); MAXN为数组大小,下同 实例2、对double等浮点数进行排序 复制代码代码如下: int cmpDouble(const void *x, const void *y){ return (*(double*)x > *(double*)y ? 1 : -1);}qsort(a, n, sizeof(a[0]), cmpDouble); 实例3、对结构体,类等复杂数据进行排序如 复制代码代码如下: struct Student{ char szName[30]; int nAge;}; 先对年龄排序,年龄相同再按姓名排序。 复制代码代码如下: int cmpStudent (const void *x, const void *y){ //先作下指针转换,再按要求比较 Student *pNodex = (Student*)x, *pNodey = (Student*)y; if (pNodex->nAge != pNodey->nAge) return pNodex->nAge - pNodey->nAge; else return strcmp(pNodex->szName, pNodey->szName);}qsort(a, n, sizeof(a[0]), cmpStudent); 实例4、按指定方式进行排序。如对只有大小写字母的字符串"AajkuKdYUBCDwyz"进行排序,要求大写字母在前,小写字母在后。 复制代码代码如下: int cmp1(const void *x, const void *y){ char *pcx = (char*)x, *pcy = (char*)y; bool flag1 = *pcx >= 'A' && *pcx <= 'Z'; bool flag2 = *pcy >= 'A' && *pcy <= 'Z'; if(flag1 == flag2) //如果都为大写字母或都为小写字母 return *pcx - *pcy; else //否则,谁为大写字母,谁的权值小。 return flag1 ? -1 : 1;}int main(){ char szText[] = "AajkuKdYUBCDwyz"; qsort(szText, strlen(szText), sizeof(szText[0]), cmp1); printf("%s\n", szText); return 0;}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号