如何使用VC编程的库函数中的快速排序函数
小职 2018-07-05 来源 : 阅读 1023 评论 0

摘要:本文主要向大家介绍了如何使用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频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程