qsort的基本用法

2023-11-18

qsort的基本用法

  在我们日常的刷题中,我们经常遇见一些需要排序的问题,有的时候我们会直接运用循环以及选择结构来暴力排序,或者使用比较简单的冒泡排序等排序方法,这些都是直接运用我们C语言或者C++里的底层代码来实现。今天我将介绍一种较为简单的排序方法:qsort排序。
  首先,qsort是C++中已经封装好了的一个函数,我们在使用时需要先引用stdlib.h这个头文件

#include<stdlib.h>

  或者是

#include<cstdlib>

  这两种都是可以的
  其次,我们要了解qsort函数的使用规则:
qsort(start,num,size,cmp)
  其中start为起始地址,num为待排序的数组元素的个数,size为每个数组元素的大小(单位是字节),cmp为比较器,也就是用来比较排序的函数
int cmp(const void * elem1, const void * elem2)
  elem1和elem2是两个待比较的元素

int cmp(const void * elem1, const void * elem2)
{
 	return *(int *)elem1 - *(int *)elem2;
 	//升序排序,也就是从小到大排序
 	//反过来就是降序
}

  好的,前期准备工作完成之后那么我们开始讲解qsort函数的具体用法:

1.对int类型数组排序
int num[100]; 
int cmp ( const void *a , const void *b ) 
{ 
	return *(int *)a - *(int *)b; 
} 
qsort(num,100,sizeof(num[0]),cmp); 
2.对char类型数组排序(同int类型)
char word[100]; 
int cmp( const void *a , const void *b ) 
{ 
	return *(char *)a - *(int *)b; 
} 
qsort(word,100,sizeof(word[0]),cmp); 
3.对double类型数组排序(特别要注意)
double in[100]; 
int cmp( const void *a , const void *b ) 
{ 
	return *(double *)a > *(double *)b ? 1 : -1; 
} 
qsort(in,100,sizeof(in[0]),cmp)
4.对字符串进行排序
struct In 
{ 
	int data; 
	char str[100]; 
}s[100]; 
//按照结构体中字符串str的字典顺序排序 
int cmp ( const void *a , const void *b ) 
{ 
	return strcmp( (*(In *)a)->str , (*(In *)B)->str ); 
} 
qsort(s,100,sizeof(s[0]),cmp); 

  对于刚入门或者还没入门的新手而言,将这几种用法吃透能够应对大半的题目,当然对于C++而言,还有更加快速高效的sort排序,而这种排序也是最常用的排序之一,其基础用法与qsort相似,诸位可以搜索相应的资料进行学习。都看到这里了,确定不给疯封来个免费的赞和关注吗?
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qsort的基本用法 的相关文章

  • Volatile.Read 和 Volatile.Write 背后的逻辑是什么?

    来自 MSDN Volatile Read 读取字段的值 在需要它的系统上 插入一个 阻止处理器重新排序内存的内存屏障 操作如下 如果在该方法之后出现读或写 代码 处理器无法移动它before这个方法 and Volatile Write
  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • C 中“complex”的默认类型

    根据我读过的文档 C99 和更高版本的支持float complex double complex and long double complex作为复杂类型 但是 此代码在使用时编译时不会发出警告gcc Wall Wextra inclu
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • 求全排列的数学方法(洛谷1088 火星人noip2004普及组第4题)

    人类终于登上了火星的土地并且见到了神秘的火星人 人类和火星人都无法理解对方的语言 但是我们的科学家发明了一种用数字交流的方法 这种交流方法是这样的 首先 火星人把一个非常大的数字告诉人类科学家 科学家破解这个数字的含义后 再把一个很小的数字
  • 实战wxPython:056 - GDI基本元素之颜色Colour

    GDI系统中的设备上下文包含一些基本元素 例如颜色 画刷 画笔或字体等等 wx Colour定义设备上下文中对象显示的颜色 wx Brush是一个用于填充区域的绘图工具 它用于绘制形状的背景 它有颜色和风格 wx Pen用于绘制形状的轮廓
  • 查询sql数据库中表占用的空间大小

    1 SQL统计数据 大量事务操作后可能不准 exec sp spaceused 表名 2 准确的表空间大小 但可能会花些统计时间 exec sp spaceused 表名 true 3 数据库大小查询 exec sp spaceused 4
  • 关于shiro doGetAuthorizationInfo授权方法和doGetAuthenticationInfo登陆认证方法的执行时机

    1 默认情况下不关闭shiro session 登陆时生成JESSIONID 执行doGetAuthorizationInfo的时机 1 subject hasRole admin 或 subject isPermitted admin 自
  • error: ‘FixedArray’ {aka ‘class ceres::internal::FixedArray<double, 3>’} has no member named ‘data’

    在使用g2o或者Ceres遇到以下问题 error FixedArray aka class ceres internal FixedArray
  • private static final Long serialVersionUID= 1L详解

    我们知道在对数据进行传输时 需要将其进行序列化 在Java中实现序列化的方式也很简单 可以直接通过实现Serializable接口 但是我们经常也会看到下面接这一行代码 private static final Long serialVer
  • R语言基础图形元素——坐标轴和网格线

    R语言基础图形元素 坐标轴和网格线 简介 1 坐标轴 2 网格线 参考书籍 简介 坐标轴为图中元素数值大小提供了参照 绘图时 时常需要实现坐标轴的个性化绘制 可以通过axis 函数实现 网格线是图形的一种辅助线 可以实现图中元素更加精确把控
  • R语言作图:坐标轴设置

    R语言作图 坐标轴设置 偷闲阁 2018 02 04 20 51 24 209654 收藏 359 分类专栏 R语言 可视化 文章标签 R 坐标轴 刻度 可视化 版权声明 本文为博主原创文章 遵循 C
  • 小白用Python抓取豆瓣高评分喜剧电影

    目的 抓取豆瓣高评分喜剧电影 导入所需的库 import requests 进行模拟浏览器进行发送请求 import json 导入JSON类型的库 不会导入库的话 请参考我的上一篇文章 上面有提及 小白如何抓取网页 进行确定URL和浏览器
  • 开发gitlab-reporting周报项目的总结

    一 方案设计 二 数据库设计 三 代码设计 从gitlab项目中输出每个成员的周报 事件触发webhook 接收webhook的server server解析webhook事件 做一个周报生成器 用gitlab的issues生成周报 功能
  • WebGL 视图矩阵、模型视图矩阵

    目录 立方体由三角形构成 视点和视线 视点 观察目标点和上方向 视点 观察目标点 上方向 在WebGL中 观察者的默认状态应该是这样的 视图矩阵程序 LookAtTriangles js 实际上 根据自定义的观察者状态 绘制观察者看到的景象
  • 【插件】谷歌浏览器插件visio在线打开vsdx文件

    下载地址
  • 【牛客C++入门】CPP10 判断成绩等级

    描述 键盘录入一个成绩 整数 判断并输出成绩的等级 如果用户输入成绩不合法 小于0或者大于100 则输出成绩不合法 90 100 优秀 80 89 良 70 79 中 60 69 及格 0 59 差 输入描述 输入学生的成绩 整数 输出描述
  • 最美应用API接口分析

    最美应用API接口分析 最美应用API接口分析一 请求版本列表1 1 API二 请求应用配置2 1 API2 2参数列表2 3 返回三 友盟更新3 1 API3 2参数列表3 3 返回四 appleStore应用信息4 1API4 2 返回
  • 发布npm包-简要记录

    1注册账号 注册npm账号 需要邮箱 激活npm账号 npm账号注册成功以后会收到邮件 邮件中有个链接 点进去进行激活 2创建项目 npm init 创建项目 name 命名规则 不能包含大写字母 空格及下滑线 version 创建时候默认
  • Shiro源码分析-初始化-SecurityManager

    源码分析的第一篇以SecurityManager的初始化为题 根据ini配置文件初始化shiro的代码主要为两段 解析ini文件为Ini对象 Factory
  • 电商行业常用指标

    首先要构建电商数据分析的基本指标体系 主要分为8个类指标 即 1 总体运营指标 从流量 订单 总体销售业绩 整体指标进行把控 起码对运营的电商平台有个大致了解 到底运营的怎么样 是亏是赚 2 网站流量指标 即对访问你网站的访客进行分析 基于
  • 【Python】pip安装源、pip config命令 及 pip安装包位置 等相关问题

    永久性添加pip安装源 查看pip文件的存储位置有 查看pip config 的配置方法 删除配置信息 查看pip下载的安装包的默认路径 查看如何修改安装位置 永久性添加pip安装源 pip config set global index
  • F5 BIG-IP LTM基础资料

    F5 BIG IP网络概述 TMOS是一个全代理的体系结构 流量必须穿越BIG IP设备以获得TMOS的优化效果 部署方式 路由模式 也被称作串联模式 真实服务器放在BIG IP之后的一个内部网络 真实服务器的网关需要指向 或者最终通过 B
  • qsort的基本用法

    qsort的基本用法 在我们日常的刷题中 我们经常遇见一些需要排序的问题 有的时候我们会直接运用循环以及选择结构来暴力排序 或者使用比较简单的冒泡排序等排序方法 这些都是直接运用我们C语言或者C 里的底层代码来实现 今天我将介绍一种较为简单