C语言qsort函数的简介和用法,保证简洁明了!

C函数qsort的简介和用法

BY:SMJUN

C函数qsort实现快速排序

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

qsort简介

• qsort函数是ANSI C标准中提供的,其声明在 stdlib.h文件中,是根据二分发写的,其时间复杂 度为n*log(n),其结构为: • void qsort(void *base,size_t nelem,size_t width, cmp); • *base 为要排序的数组 • nelem 为要排序的数组的长度 • width 为数组元素的大小(一字节为单位) • 简单示例:对int num[100]排序,qsort中各参数 怎么写? • qsort(num,100,sizeof(num[0]),cmp);

自定义比较函数

• 比较函数的名字是自定义的(这里我们用CMP命名); • Cmp:qsort 要求提供的这个函数是一个需要自己定义的比较函 数,比较函数使得qsort通用性更好。有了比较函数qsort可以实 现对数组,字符串,结构体等结构进行升序或降序排序。 • Int Cmp(const void *a , const void *b )中有两个元素作为参数, 返回一个int值, 如果比较函数返回大于0,qsort就认为 a>b , 如果比较函数返回等于0 qsort就认为a 和b 这两个元素相等,返 回小于零 qsort就认为 ab),你比较函数却返 回一个 -1 (小于零的)那么qsort认为a

简单示例:对int num[100]中的元素从小到大排序。 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; //强制转换类型 } qsort(num,100,sizeof(num[0]),cmp);

Cmp()定义了两个const void(类型为空)的指针*a和*b; 在*(int *)a - *(int *)b; 这句中把指针强制转换为 int型; 我们可以将const void 改为你需要排序对象的类型; int num[100]; int cmp ( int *a , int *b ) { return *a - *b; } qsort(num,100,sizeof(num[0]),cmp); 如果要对num[100]中的元素从大到小排序,只需要将return *a - *b改为 return *b -*a 就可以实现;

qsort简单实例

• • • • • • • • • • • • • • • • • • • • • • •

应用qsort对int数组进行排序:

#include #include int cmp_1 ( int *a , int *b ) { return *a - *b; } int cmp_2 ( int *a , int *b ) { return *b - *a; } void main() { int num[10]={1,3,5,7,9,2,4,6,8,0}; int i; qsort(num,10,sizeof(num[0]),cmp_1);//从小到大 for(i=0;i

C函数qsort的简介和用法

BY:SMJUN

C函数qsort实现快速排序

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

qsort简介

• qsort函数是ANSI C标准中提供的,其声明在 stdlib.h文件中,是根据二分发写的,其时间复杂 度为n*log(n),其结构为: • void qsort(void *base,size_t nelem,size_t width, cmp); • *base 为要排序的数组 • nelem 为要排序的数组的长度 • width 为数组元素的大小(一字节为单位) • 简单示例:对int num[100]排序,qsort中各参数 怎么写? • qsort(num,100,sizeof(num[0]),cmp);

自定义比较函数

• 比较函数的名字是自定义的(这里我们用CMP命名); • Cmp:qsort 要求提供的这个函数是一个需要自己定义的比较函 数,比较函数使得qsort通用性更好。有了比较函数qsort可以实 现对数组,字符串,结构体等结构进行升序或降序排序。 • Int Cmp(const void *a , const void *b )中有两个元素作为参数, 返回一个int值, 如果比较函数返回大于0,qsort就认为 a>b , 如果比较函数返回等于0 qsort就认为a 和b 这两个元素相等,返 回小于零 qsort就认为 ab),你比较函数却返 回一个 -1 (小于零的)那么qsort认为a

简单示例:对int num[100]中的元素从小到大排序。 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; //强制转换类型 } qsort(num,100,sizeof(num[0]),cmp);

Cmp()定义了两个const void(类型为空)的指针*a和*b; 在*(int *)a - *(int *)b; 这句中把指针强制转换为 int型; 我们可以将const void 改为你需要排序对象的类型; int num[100]; int cmp ( int *a , int *b ) { return *a - *b; } qsort(num,100,sizeof(num[0]),cmp); 如果要对num[100]中的元素从大到小排序,只需要将return *a - *b改为 return *b -*a 就可以实现;

qsort简单实例

• • • • • • • • • • • • • • • • • • • • • • •

应用qsort对int数组进行排序:

#include #include int cmp_1 ( int *a , int *b ) { return *a - *b; } int cmp_2 ( int *a , int *b ) { return *b - *a; } void main() { int num[10]={1,3,5,7,9,2,4,6,8,0}; int i; qsort(num,10,sizeof(num[0]),cmp_1);//从小到大 for(i=0;i


相关文章

  • 用函数式编程技术编写优美的 JavaScript
  • 文档选项 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 最新推荐 Java 应用开发源动力 - 下载免费软件,快速启动开发 级别: 初级 Shantanu Bhattacharya (shantanu@justawo ...查看


  • 数据结构课程设计实验报告心得体会C++
  • 专业班级:姓 名:学 号:设计时间:指导教师: 排序算法比较分析 08软件工程2班 汪伟 08010xxxxx 2010-9-15--2010-9-27 杨薇薇 课程设计报告的内容 一.题目:排序算法比较 1. 设计目的 1. 掌握各种排序 ...查看


  • 东南大学数据结构 93-2010
  • 东南大学93考研题 注意事项 : (1) 答卷上需写清题号,不必抄题 (2) 描述可用你熟悉的一种类高级语言,如类Pascal ,所用主要数据结构及变量的意义须加以注释.必要时算法中应加注释 . 一.回答下列问题 : (共 35分) l 与 ...查看


  • 算法设计与分析(第2版)-王红梅-胡明-习题答案
  • 算法设计与分析(第2版)-王红梅-胡明-习题 答案 习题1 1. 图论诞生于七桥问题.出生于瑞士的伟大数学家欧拉(Leonhard Euler,1707-1783) 提出并解决了该问题.七桥问题是这样描述的:一个人是否能在一次步行中穿越哥尼 ...查看


  • 工商管理专业课程梳理
  • 课 程 考 核 课 程 考 核 湖南大学工商管理学院修课计划 课 程 考 核 课 程 考 核 课程总结 温故而知新,可以为师矣.大学接近三年,在工商管理系读了两年,再加上转系之前,在岳麓书院读了一年,学的知识虽多,却没有好好总结过.今借此机 ...查看


  • 常用嵌入式软件白盒测试工具介绍
  • 关于应用RPT在性能测试的思考谈谈嵌入式操作系统的调试问题软件测试中的性能测试的容量评估 高级性能测试LoadRunner技术课程高级软件测试技术课程[就业]先实习后上岗,入职年薪5-10万! ChinaItLab 佚名 2007-11-2 ...查看


  • Matlab软件在测量平差教学中的应用
  • 第16卷第1期 测绘工程 V01.16№.1 2007年2月 ENGINEERINGOFSURVEYINGAND NL岬PING Feb..2007 Matlab软件在测量平差教学中的应用 潘雄,付宗堂 (中国地质大学土地科学系,北京100 ...查看


  • 单招考试大纲
  • 一.考试范围与要求 (一)词汇 掌握常用单词的意义.固定搭配及用法:近义词在意义和用法上的差异:固定词组的特定含义等. (二)语法 1.词类 掌握名词.代词.形容词.副词.数词.动词及介词.冠词和连词的基本用法. 2.动词的时态 (1)了解 ...查看


  • 学点数据分析
  • title: "学点数据分析" author: "大音如霜" date: "Tuesday, August 04, 2015" 我们写的不是代码是情怀! 从今天起这个系列开始写了, ...查看


热门内容