1.qsort介绍与用法

快速排序函数qsort可以以O(n)的时间复杂度完成排序,并且可以对所有数据类型进行排序,在使用时要引用头文件<stdlib.h>.

qsort的声明是这样的:

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

base是待排序首元素的地址,num是待排序的数据个数,size是待排序数据的大小(字节),最后一个参数是一个函数指针,实现的功能是比较两个数据的大小,需要由我们自己实现。

下面介绍compar函数的写法:

从声明中可以看出,compar函数的参数有两个,分别是待排序的两个数据e1、e2,返回一个整形(返回正值表示e1大于e2,返回0表示相等,返回负值表示e1小于e2)。

我们以字符串和整形比较为例:

1.整形的比较

int compar(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;
}

2.字符串的比较

int compar(const void* e1, const void* e2)
{return strcmp((char*)e1, (char*)e2);
}

这里要注意,不能直接指针e1、e2进行解引用操作,因为它们的类型都是void*型,我们要先进行强制类型转换,如果比较的内容是整形,就转化为(int*),如果比较的内容是字符或字符串,就转化为(char*)。

2.qsort的实际使用

接下来我们看几个qsort的实际应用:

1.对结构体排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Stu
{char name[20];int age;
};//创建一个结构体变量来存储每个对象的多个信息
int age_sort(const void* e1, const void* e2)
{return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}
int name_sort(const void* e1, const void* e2)
{return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
}
int main()
{struct Stu s[3] = { {"yihua",21},{"wangwei",19},{"hutao",21} };int sz = sizeof(s) / sizeof(s[0]);qsort(s,sz,sizeof(s[0]),age_sort);//对年龄升序排序qsort(s, sz, sizeof(s[0]), name_sort);//对姓名字典序排序return 0;
}

qsort函数的使用方法相关推荐

  1. C语言qsort函数使用方法大全

    文章目录 一.qsort函数简介 二.qsort函数常用实例 1.比较整型数组 2.比较char数组 3.比较double数组 4.比较字符串 4.1按首字母排序 4.2按长度排序 4,3按字典顺序 ...

  2. C语言-qsort函数详解及使用例

    q s o r t ( ) qsort() qsort() 函数是C语言 srdlib.h 库中的排序函数.此函数使用快速排序算法,时间复杂度一般在 O ( l g ( n ) ) O(lg(n)) ...

  3. C语言qsort函数的实现

    C语言qsort函数的实现 1.首先阅读文档,查询qsort()函数的使用方法 2.开始实现自己创建的qsort()函数 1.首先阅读文档,查询qsort()函数的使用方法 void qsort (v ...

  4. 【C语言】qsort函数的使用和模拟实现

    本篇文章我们来了解一下回C语言中qsort函数的使用方法和模拟实现.这是一个通用性很强而且非常方便的库函数,通过这篇文章希望能让你了解sort函数. 目录 一.qsort的介绍: 二.qsort函数的 ...

  5. C语言qsort函数详解

    目录 一.qsort函数的使用 二.qsort函数的模拟 一.qsort函数的使用 快排函数qsort是C的库函数,它可以对输入的任何类型的数组排序,通过该函数的函数声明我们可以看出它的使用方法: 举 ...

  6. 《C语言初阶进阶完整教程》- 已完结 - qsort函数使用方法+(数组,结构体,手动实现函数)

    目录 前言 一.解释qsort函数 1.函数原型 2.深度解析comper比较函数 二.函数使用 1.int 2.结构体 三.手动实现函数 2.核心代码(两段) 四.升级使用方法 前言 提示:此文章可 ...

  7. qsort函数使用方法总结(详细全面+代码)

    文章目录 1. qsort函数原型 2. compar参数 3. int 数组排序 4. 结构体排序 5. 字符串指针数组排序 6. 字符串二维数组排序 7. qsort函数应用:整型二维数组 1. ...

  8. C语言qsort函数解析(和使用方法)

    qsort-快速排序函数,头文件stdlib.h 首先上面是qsort函数的定义,括号里面4个又长又臭的名字是使用qsort函数时需传入的参数. void* _Base是我们要比较的数组中的起始位置 ...

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

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

最新文章

  1. Android Kotlin Flow 如何使用callbackflow
  2. 公需科目必须学吗_税务师要继续教育吗,2019税务师怎样继续教育?
  3. matlab语言 列车平稳性指标,铁道车辆平稳性分析报告.docx
  4. HTML文档的三大构成元素,构成基础结课小结 为什么三大构成是设计的基础课程...
  5. 开学很忙,故障很强(1)!!
  6. 你还没听过 CynosDB 吗?不来这场数据库技术沙龙就要 OUT 了!
  7. SpringBoot之RabbitMQ的使用
  8. cas内外网同时访问_并发编程高手必知——CAS详解
  9. linux下使用python_使用Linux环境下的vim Python开发环境
  10. Windows Server 2012 安装MySQL服务器感悟
  11. ORB SLAM论文
  12. Unity 3D网页游戏与flash网页游戏的较量
  13. Projector学习笔记
  14. OkHttp自定义拦截器实现内外服务器多地址配置且请求失败自动切换地址
  15. Python 开发桌面应用居然如此简单
  16. 高精度姿态传感器LPMS-NAV3系列
  17. 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...
  18. 使用豆瓣源下载指定版本的tensorflow(附conda安装tensorflow全步骤)
  19. 机器学习模型常用性能指标和Python代码实现
  20. 佳能Canon PIXMA MG2520 打印机驱动

热门文章

  1. WIN7频繁提示资源管理器已停止正确解决办法
  2. pdf文件在pdfbox中对应的数据结构的一点浅见
  3. 串联滞后校正网络的作用_单选(2分) 串联滞后校正装置的主要作用是在( )上造成显著的幅值衰减。...
  4. 经典消除游戏——Unity 祖玛游戏
  5. java毕设项目国产精品动漫网站(附源码)
  6. 【MySQL报错 HResult=0x80131904】
  7. 极域电子教室系统 远程桌面 部分设置界面 鼠标卡住 受控端使用administrator或降为users
  8. 华为通报显示员工已完成调岗 称其要努力活着
  9. 中国移动灵犀云语音识别SDK(android)使用指南
  10. solidity:智能合约结构介绍