c语言快排函数详解

int cmp(const void *a, const void *b)

返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 0, 那就无所谓谁前谁后..

下面就把snoopy曾经写的介绍qsort的完整版贴出来好了,我想有与我一样经历的朋友也可以弄懂的:

很多人问这个东西.我以前也看了好久,今天翻到以前学快排的时候写的练习code,基本上

能覆盖绝大部分用法了.

里面有很多地方没判断相等的情况,按道理来说相等情况下应该返回0的,这个请看代码的

时候注意.我尽量保证代码不出错了.

下面的这些说明和问题都是个人原创,没查什么资料,所以不保证其完全正确性,在此表示个

人不对出现的问题负任何责任,大家WA了或者干吗的不要怪我,不过至少目前来说我用起来

是没问题的 :)

** 关于快排函数的一些说明 **

qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qsort的写法如下

qsort(s,n,sizeof(s[0]),cmp);

其中第一个参数是参与排序的数组名(或者也可以理解成开始排序的地址,因为可以写&s[i]

这样的表达式,这个问题下面有说明); 第二个参数是参与排序的元素个数; 第三个三数是

单个元素的大小,推荐使用sizeof(s[0])这样的表达式,下面也有说明 :) ;第四个参数就是

很多人觉得非常困惑的比较函数啦,关于这个函数,还要说的比较麻烦...

我们来讨论cmp这个比较函数(写成cmp是我的个人喜好,你可以随便写成什么,比如qcmp什么

的).典型的cmp的定义是

c语言中快排函数,c语言快排函数详解相关推荐

  1. C语言中的输入输出流和缓冲区(重点)详解

    导读: C语言中我们用到的最频繁的输入输出方式就是scanf()与printf(). scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中. printf(): 将指定的文字/字符串输 ...

  2. sort在c语言中的作用,c语言中sort的用法详解.docx

    c语言中sort的用法详解.docx C语言中SORT的用法详解C语言的学习很多是比较复杂的,那么C语言中SORT的用法的用法你知道吗下面学习啦小编就跟你们详细介绍下C语言中SORT的用法的用法,希望 ...

  3. c语言字符串正序反序连接输出,C语言中字符串实现正序与逆序实例详解

    C语言中字符串实现逆序实例详解 字符串逆序和正序的实现代码: #include #include #include #include #include /*定义*/ typedef struct no ...

  4. C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...

    详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...

  5. C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解

    前言 大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets().他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输 ...

  6. putchar(c1)在C语言中表示,C语言中的getchar和putchar详解

    一.首先给出<The_C_Programming_Language>这本书中的例子: #include int main( ) { int c; c = getchar(); while ...

  7. C语言中的带参宏和带参函数的区别

    C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查.而带参宏只是简单的字符串替换. (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的.而带参函数是在程序 ...

  8. verilog语言中的@什么意思 verilog语言中的@什么意思

    verilog语言中的@什么意思 verilog语言中的@什么意思 2012-05-27 22:47 在英语中@ 读at,也就是在--的时候,这个小学应该学过,对吧.verilog中@ 的含义就是触发 ...

  9. c加加属于面向对象的程序设计语言吗,下列语言中属于面向对象的程序设计语言是______。A、Visual BasicB、PASCALC、CD、FORTRAN...

    下列语言中属于面向对象的程序设计语言是______.A.Visual BasicB.PASCALC.CD.FORTRAN 更多相关问题 经纬仪如存在指标差,将使观测结果出现( ). 德治的约束作用主要 ...

  10. 编程题50 习题6-8 单词首字母大写【浙大版《C语言程序设计(第4版)》题目集 详解教程】

    编程题50 习题6-8 单词首字母大写[浙大版<C语言程序设计(第4版)>题目集 详解教程] 原题链接:习题6-8 单词首字母大写 (pintia.cn) 参考答案 #include< ...

最新文章

  1. Docker 部署SpringBoot项目不香吗?
  2. Kubernetes的四种用户部署场景
  3. php+nginx上传文件配置
  4. android开发学习之路——连连看之游戏逻辑(五)
  5. Nacos源码心跳异常检测
  6. android 处理http状态码,OkHttp(Retrofit)对于http状态码202的处理
  7. Java即时编译:不仅仅是一个流行词
  8. 【计算机网络】因特网结构
  9. 案例精解:insert逻辑读暴增至20万,只因Oracle Recyclebin过大
  10. php分页类示例下载,PHP 通用分页类的简单示例
  11. python面试题之Python如何实现单例模式?
  12. SQL2005恢复只有mdf文件的数据库
  13. 第二季-专题7-ARM跑快了---时钟初始化
  14. 小乌龟解决反向线上代码冲突
  15. 最大似然法 的通俗理解
  16. 如何在南方CASS中内插高程点
  17. 思科ccnp网络工程师必看SDh工作原理
  18. 国家新标准上线,妈妈再也不用担心我吃辣条啦!
  19. Vision Transformer(VIT)代码分析——保姆级教程
  20. 2021 CNSS招新赛 WEB WP

热门文章

  1. 开源夏令营之项目汇报7
  2. [nltk_data] Error loading words: <urlopen error [Errno 11004]
  3. hello树先生经典台词
  4. Git Clone命令直接使用用户名密码Clone
  5. Maven项目集成cxf框架发布WebService
  6. 优麒麟 22.04 LTS 版本正式发布 | UKUI 3.1开启全新体验
  7. [ZJOI2007]矩阵游戏(二分图匹配、匈牙利算法)
  8. linux下面用ssh替代rsh
  9. Windows10一句话从administrator权限提升到system权限
  10. yum clean all 是什么意思