函数声明

  void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

参数

  • base-- 指向要排序的数组的第一个元素的指针。
  • nitems-- 由 base 指向的数组中元素的个数。
  • size-- 数组中每个元素的大小,以字节为单位。
  • compar-- 用来比较两个元素的函数,即函数指针

比较函数(只是一个例子)

我从我写的代码中抽了一个例子出来:

int cmp(const void* a, const void* b) {
if ((*(stu*)a).t == (*(stu*)b).t) {
if ((*(stu*)a).y > (*(stu*)b).y)
return -1;
else
return 1;
} else {
return (*(stu*)a).t < (*(stu*)b).t ? 1 : -1;
}
}

  注意:传入的形参变量是两个空指针,所以在下面的时候你要将这两个空指针强转为你要比较的类型,例如例子上面的:(stu*)a ,就是把a强转为了我自己定义的结构体类型stu     然后  *(stu*)a 则是对这个指针取内容,至于这个函数是怎么比较的,则下面说:

  如果compar返回值小于0(< 0),那么a所指向元素会被排在b所指向元素的左面;
  如果compar返回值等于0(= 0),那么a所指向元素与b所指向元素的顺序不确定;(这里体现出qsort()的不稳定)
  如果compar返回值大于0(> 0),那么a所指向元素会被排在b所指向元素的右面。
也就是说,如果   a.t>b.t   则return-1;(这里简单写了,能表达意思就行)意思就是,如果a.t大,那a.t就排在前面,也就是对整个数组就行降序排列。

qsort()函数的使用的更多相关文章

  1. qsort函数、sort函数【转】

    http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...

  2. C中的qsort函数和C++中的sort函数的理解与使用

    一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...

  3. C语言中qsort函数的应用

    qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序 一.对int类型数组排序 ]; int cmp ( const void *a , const voi ...

  4. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  5. qsort函数详解

    C语言标准库函数 qsort 详解 文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 原文链接:http://www.slyar.c ...

  6. qsort函数

    qsort函数用法举例 #include <stdio.h> #include <stdlib.h> #include <string.h> //数字比较函数 in ...

  7. qsort函数用法【转】

    qsort函数用法 qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(con ...

  8. qsort函数用法

    qsort函数用法   qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(co ...

  9. qsort函数用法(转)

    qsort函数用法   qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(c ...

  10. C语言qsort函数用法

    qsort函数简介 排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等. 看名字都知道快速排序是目前公认的一种比较好的排序算法.因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用. ...

随机推荐

  1. 前端下载文档的java工具类

    package com.ry.project.util.commUtil;import freemarker.template.Configuration;import freemarker.temp ...

  2. C# - 音乐小闹钟_BetaV3.0

    时间:2017-11-22 作者:byzqy 介绍: 音乐小闹钟 BetaV3.0 新鲜出炉了,快来围观吧!上效果图: 是不是觉得顿时变得高大上了许多呢?^_^ 工具/原料: (操作系统:Window ...

  3. 使用ECharts绘制网址径向树状图

    an.rustfisher.com有很多内容,很多页面.如果用一个树状图把所有页面展示出来会是什么效果? 第一时间想到了ECharts. 最后效果: https://an.rustfisher.com ...

  4. Python中管理数据库

    前言:Python中是利用MySQL模块和数据库之间建立联系. MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL ...

  5. 大厂的 SDK 写法,偷学到了!

    自己动手写 SDK 的经验技巧分享 大家好,我是鱼皮. 最近因为工作需要,自己动手写了一些项目的通用 SDK.在编写的过程中,我阅读和参考了不少公司中其他大佬写的 SDK,也总结了一些开发 SDK 的 ...

  6. MySQL(二)——常用命令

    一.MySQL服务器1.介绍安装服务:mysqld -install停止服务:net stop mysql启动服务:net start mysql用户名:root,密码:Password,连接数据库: ...

  7. NumPy的基本操作

    1 简介 NumPy 是用于处理数组的 python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的.它还拥有在线性代数.傅立叶变换和矩阵领域中工作的函数 ...

  8. 虚拟机使用scp传输文件提示“WARNING REMOTE HOST IDENTIFICATION HAS CHANGED”解决方式

    虚拟机使用scp传输文件提示"WARNING REMOTE HOST IDENTIFICATION HAS CHANGED"解决方式 简单的说就是虚拟机里保存的认证密钥不正确了,需 ...

  9. utittest和pytest中mock的使用详细介绍

    头号玩家 模拟世界 单元测试库介绍 mock Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为. python3.3 ...

  10. 215 day01_Object类、常用API

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...