当前位置:  编程技术>c/c++/嵌入式

如何使用VC库函数中的快速排序函数

    来源: 互联网  发布时间:2014-10-20

    本文导语:  函数原型:void qsort(void *base,size_t num,size_t width, int (__cdecl *compare )(const void *, const void *) ); 第一个是数组地址,第二是数组大小,第三个是数组中每个元素的字节数,最后一个是个函数指针,表示如何比较数组中的元素。 头文件...

函数原型:
void qsort(void *base,size_t num,size_t width,
int (__cdecl *compare )(const void *, const void *) );

第一个是数组地址,第二是数组大小,第三个是数组中每个元素的字节数,最后一个是个函数指针,表示如何比较数组中的元素。

头文件 #include
下面分别就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 = 'A' && *pcy


    
 
 

您可能感兴趣的文章:

  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 怎样在使用curses字符串输出函数或字符输出函数时,隐藏光标
  • php使用socket_bind()函数绑定IP地址
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • 请问在REDHAT下使用gcc编译器用的是什么函数库,函数库的资料应该上哪儿找?
  • 请问有没头函数<pthread.h>和<signal.h>里的函数的详细功能介绍?和使用方法???
  • getaddrinfo这个函数是从哪里获取信息的?使用这个函数究竟哪里方便了。。
  • 很菜,shell脚本中怎么写函数,怎么使用带参数的函数???
  • Python过滤函数filter()使用自定义函数过滤序列实例
  • 急:unix的shell脚本中,定义了一个函数getDate(),在后面的执行命令参数用要使用这个函数的返回值,应该怎么写?
  • 请问如何在一个函数内部定义的一个新类中使用函数里声明的变量
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • 在shell中使用mail函数的时候如何使用变量
  • 调用同一个函数建立的多个线程,如何使用函数的数据?
  • 关于如何使用内核函数的问题
  • C语言应用程序使用的函数来源于libc库, Libc库中的函数是在哪里实现的??
  • 线程函数中使用setpriority函数的作用
  • 使用tcgetattr函数与tcsetattr函数的问题
  • 一个数据库函数的使用?
  • linux 下使用 sendmsg 函数 udp 通信问题???
  • 急问:Linux程序中,使用system函数的几个问题
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • ll 命令输出,使用sort排序问题
  • linux中使用sort命令进行排序的问题
  • C#中使用快速排序按文件创建时间将文件排序的源码
  • sqlServer使用ROW_NUMBER时不排序的解决方法
  • sql server分组排序之row_number()over函数的使用
  • 哪位有使用XML创建可排序、分页的数据显示页面的例程?多多指教噢!
  • sql Server使用ROW_NUMBER时不排序的实例代码
  • 不使用php api函数实现数组的交换排序示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。 iis7站长之家
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Python不使用print而直接输出二进制字符串
  • c#中SAPI使用总结——SpVoice的使用方法
  • Office 2010 Module模式下使用VBA Addressof
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • asp程序使用的access在Linux下如何使用!
  • c/c++预处理命令预#,##使用介绍
  • 新装的Linux使用root用户不能使用FTP?
  • 在div中使用css让文字底部对齐的方法
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • Python namedtuple(命名元组)使用实例
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况
  • MySQL Workbench的下载安装与使用教程
  • 嵌入式Linux使用外挂Vsftpd不能正常使用, 请高手解答,谢谢。




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3