qsort函数的使用方法
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函数的使用方法相关推荐
- C语言qsort函数使用方法大全
文章目录 一.qsort函数简介 二.qsort函数常用实例 1.比较整型数组 2.比较char数组 3.比较double数组 4.比较字符串 4.1按首字母排序 4.2按长度排序 4,3按字典顺序 ...
- C语言-qsort函数详解及使用例
q s o r t ( ) qsort() qsort() 函数是C语言 srdlib.h 库中的排序函数.此函数使用快速排序算法,时间复杂度一般在 O ( l g ( n ) ) O(lg(n)) ...
- C语言qsort函数的实现
C语言qsort函数的实现 1.首先阅读文档,查询qsort()函数的使用方法 2.开始实现自己创建的qsort()函数 1.首先阅读文档,查询qsort()函数的使用方法 void qsort (v ...
- 【C语言】qsort函数的使用和模拟实现
本篇文章我们来了解一下回C语言中qsort函数的使用方法和模拟实现.这是一个通用性很强而且非常方便的库函数,通过这篇文章希望能让你了解sort函数. 目录 一.qsort的介绍: 二.qsort函数的 ...
- C语言qsort函数详解
目录 一.qsort函数的使用 二.qsort函数的模拟 一.qsort函数的使用 快排函数qsort是C的库函数,它可以对输入的任何类型的数组排序,通过该函数的函数声明我们可以看出它的使用方法: 举 ...
- 《C语言初阶进阶完整教程》- 已完结 - qsort函数使用方法+(数组,结构体,手动实现函数)
目录 前言 一.解释qsort函数 1.函数原型 2.深度解析comper比较函数 二.函数使用 1.int 2.结构体 三.手动实现函数 2.核心代码(两段) 四.升级使用方法 前言 提示:此文章可 ...
- qsort函数使用方法总结(详细全面+代码)
文章目录 1. qsort函数原型 2. compar参数 3. int 数组排序 4. 结构体排序 5. 字符串指针数组排序 6. 字符串二维数组排序 7. qsort函数应用:整型二维数组 1. ...
- C语言qsort函数解析(和使用方法)
qsort-快速排序函数,头文件stdlib.h 首先上面是qsort函数的定义,括号里面4个又长又臭的名字是使用qsort函数时需传入的参数. void* _Base是我们要比较的数组中的起始位置 ...
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
最新文章
- Android Kotlin Flow 如何使用callbackflow
- 公需科目必须学吗_税务师要继续教育吗,2019税务师怎样继续教育?
- matlab语言 列车平稳性指标,铁道车辆平稳性分析报告.docx
- HTML文档的三大构成元素,构成基础结课小结 为什么三大构成是设计的基础课程...
- 开学很忙,故障很强(1)!!
- 你还没听过 CynosDB 吗?不来这场数据库技术沙龙就要 OUT 了!
- SpringBoot之RabbitMQ的使用
- cas内外网同时访问_并发编程高手必知——CAS详解
- linux下使用python_使用Linux环境下的vim Python开发环境
- Windows Server 2012 安装MySQL服务器感悟
- ORB SLAM论文
- Unity 3D网页游戏与flash网页游戏的较量
- Projector学习笔记
- OkHttp自定义拦截器实现内外服务器多地址配置且请求失败自动切换地址
- Python 开发桌面应用居然如此简单
- 高精度姿态传感器LPMS-NAV3系列
- 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...
- 使用豆瓣源下载指定版本的tensorflow(附conda安装tensorflow全步骤)
- 机器学习模型常用性能指标和Python代码实现
- 佳能Canon PIXMA MG2520 打印机驱动
热门文章
- WIN7频繁提示资源管理器已停止正确解决办法
- pdf文件在pdfbox中对应的数据结构的一点浅见
- 串联滞后校正网络的作用_单选(2分) 串联滞后校正装置的主要作用是在( )上造成显著的幅值衰减。...
- 经典消除游戏——Unity 祖玛游戏
- java毕设项目国产精品动漫网站(附源码)
- 【MySQL报错 HResult=0x80131904】
- 极域电子教室系统 远程桌面 部分设置界面 鼠标卡住 受控端使用administrator或降为users
- 华为通报显示员工已完成调岗 称其要努力活着
- 中国移动灵犀云语音识别SDK(android)使用指南
- solidity:智能合约结构介绍