/**
*函数名称:     qsort
*函数原型:     void qsort(void *base,size_t num,size_t width,int (*fcmp)(const void *,const void *)
*函数功能:     使用快速排序法对数组base进行排序
*函数返回:
*参数说明:
*@base         待排序数组
*@num          数组元素个数
*@width        每个元素大小
*@fcmp         用于对数组元素进行比较的函数指针,该函数另外编写,有2个参数.
*所属文件:     <stdlib.h>
*/#include <stdio.h>
#include <stdlib.h>typedef struct _Person
{int Age;double Heigh;
}Person;Person FamilyMem[5] = {{12,1.46},{13,1.37},{12,1.29},{15,1.78},{10,1.10}};//升序排列,先按Age排序,Age相等的情况下,按Heigh排序。
int sort_function( const void *a,const void *b)
{Person *A = (Person *)a;Person *B = (Person *)b;if ( A->Age == B->Age )return A->Heigh > B->Heigh ? 1 : -1 ;elsereturn ( A->Age - B->Age );
}
int main()
{int x;qsort((void *)FamilyMem,5,sizeof(Person),sort_function);for( x=0; x < 5; x++ )printf("[%d,%f]\t",FamilyMem[x].Age,FamilyMem[x].Heigh);return 0;
}

qsort函数是ANSI C标准中提供的,是根据二分发写的,其时间复杂度为n*log(n)。int (*fcmp)(const void *a,const void *b) 为判断大小函数的指针,这个函数需要自己定义,函数含有两个参数,返回值为int。【如果比较函数返回值为1(大于零的),qsort就认为*a > *b;如果比较函数返回值等于0,则qsort认为*a = *b;如果比较函数返回-1(小于0),qsort认为*a < *b】qsort进行升序排列。

C/C++语言函数学习(2)qsort相关推荐

  1. C/C++语言函数学习(1):atexit、exit、return

    /*stdlib.h*void exit(int status);*功 能:终止程序*int atexit(void (*func)(void));*功 能: 注册终止函数,在main函数结束以后调用 ...

  2. vue函数如何调用其他函数?_C语言函数学习-函数的嵌套调用

    文章logo 函数的嵌套调用 C语言中不允许作嵌套的函数定义.因此各函数之间是平行的,不存在上一级函数和下一级函数的问题.但是C语言允许在一个函数的定义中出现对另一个函数的调用.这样就出现了函数的嵌套 ...

  3. strstr函数头文件_C语言(函数)学习之strstr strcasestr

    一.strstr函数使用 [1] 函数原型 char *strstr(const char *haystack, const char *needle); [2] 头文件 #include [3] 函 ...

  4. C/C++语言函数学习(4)字符串处理函数

    #include <string.h> 函数名称:     strchr 函数原型:     char* strchr(char* str,char ch); 函数功能:     找出st ...

  5. C/C++语言函数学习(3)STL中map容器

    /******************************************************************map的基本操作函数:C++ Maps是一种关联式容器,包含&qu ...

  6. c语言字符串匹配函数index,C语言(函数)学习之index、rindex

    函数定义:char *index(const char *s, int c); 头文件:    #include strings.h 函数说明:index()用来找出参数s 字符串中第一个出现的参数c ...

  7. C语言再学习 -- 时间函数

    在软件设计中经常会用到关于时间的处理,用来计算语句.函数的执行时间,这时就需要精确到毫秒甚至是微妙的时间.我们首先来介绍一下,时间单位: 时间单位还有:秒(s).毫秒(ms).微秒 (μs).纳秒(n ...

  8. C语言再学习 -- 字符串和字符串函数

    最近身体很不给力,很乏累!白天没精神,晚上睡不着,心情还很烦躁.看书都有点看不下去的样子,到了C语言最难掌握的部分了,数组.指针.字符串.硬着头皮看书总结吧. 一.字符串 1.字符串介绍 字符串是以空 ...

  9. 【C语言指针】 回调函数、冒泡函数模拟实现qsort、指针和数组笔试题解析

    目录 一.回调函数 定义: 用回调函数形式实现加法运算 二.qsort 函数参数: void指针 用qsort排序整型和结构体 用冒泡函数模拟实现qsort,排序整型和结构体 三.指针和数组笔试题解析 ...

最新文章

  1. [Buzz.Today]2011.05.25
  2. 机器学习中的方法技术与应用场景
  3. Office 2007无法修复、卸载、重装
  4. 最全面的百度地图JavaScript离线版开发
  5. SAP中的“定单状态”
  6. hbuilderx设置新建jsx后缀名_TypeScript编写前基本配置操作
  7. yeomanbower
  8. JavaScript函数节流和函数防抖之间的区别
  9. Linux入门-第四周
  10. VMware虚拟机、centos以及securecrt的安装
  11. Cannot load supported formats: Cannot run program svn: CreateProcess error=2, μ
  12. 在线问题反馈模块实战(十七):实现excel模板在线下载功能
  13. 通过本地上传工具把CSV文件导入到百会报表
  14. 25 逆波兰表达式、波兰表达式
  15. Win11打印机状态错误怎么解决
  16. 森林防火系统集成解决方案
  17. clickHouse副本和同步机制
  18. 辉太郎看前端(js异步宏任务和微任务)
  19. 将字符串转换为singel类型
  20. [2009.03.22 21:37:00] 肖申克的救赎-The Shawshank

热门文章

  1. 现代软件工程 结对编程 (II) 电梯调度
  2. springboot listener_Springboot 全套面试提升宝典,为金三银四冲刺
  3. mysql事务编号_Mysql事务
  4. excel公式不自动计算_【纯干货】值得收藏的Excel日期计算公式!
  5. cario java_Cairo图形库 概述
  6. python类实例化_python基础8之类的实例化过程剖析
  7. python字符串_教你快速了解 Python 字符串
  8. cesium js 路径_vue2.0项目集成Cesium的实现方法
  9. td之间的间距怎么改_论文的一级标题、二级标题格式怎么弄?
  10. messagehub讲解_艾舜杰SAP Data Hub 数据服务总线技术深度讲解