完全自学C(干货) —— 库函数qsort

基于python的超市历年数据可视化分析 包含:Order_Date Sales Quantity Profit year month。所有这些物品都在美国4个地区的49个州销售,来着793位客户的5009个订单。9994行,21列数据。 阅读详情

目录

一,冒泡函数

二,qsort 库函数


一,冒泡函数

  • 以下函数只针对整型数组
//冒泡排序
void BubbleSort(int* p, int sz)
{
	int i = 0;
	for (i; i < sz - 1; i++)
	{
		int j = 0;
		int flag = 0;
		for (j; j < sz - 1 - i; j++)
		{
			if (*(p + j) > *(p + j + 1))
			{
				int tmp = *(p + j);
				*(p + j) = *(p + j + 1);
				*(p + j + 1) = tmp;
				flag = 1;
			}
		}
		if (0 == flag)
			break;
	}
}

int main()
{
	int arr[] = { 9,8,7,6,5,1,2,3,4 };
	int sz = sizeof arr / sizeof arr[0];
	BubbleSort(arr, sz);
    return 0;
}

二,qsort 库函数

  • 可快速排序;
  • 无排序类型限制;
  • 是回调函数;

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

  • void *base,目标数组的起始位置,即首元素地址,如arr;
  • size_t num,目标数组元素的个数,如sizeof arr/sizeof arr[0];
  • size_t size,目标数组每个元素的字节大小,如sizeof arr[0];
  • int(*cmp)(const void *, const void *),用于目标数组中元素比较的函数指针;
  • 可比较任意类型数据,如int arr,float arr,struct stu等;

void* 类型指针

  • 可接收任意类型的地址,不可解引用操作;
  • 需强制类型转换,才可解引用;
//qsort库函数的应用
#include <stdlib.h>
int cmp(const void* elm1, const void* elm2)
{
	return *((int*)elm1) - *((int*)elm2);
}

int main()
{
	int arr[] = { 9,8,7,6,5,1,2,3,4 };
	int num = sizeof arr / sizeof arr[0];
	int width = sizeof arr[0];
	qsort(arr, num, width, cmp);
    return 0;
}
//模拟实现qsort库函数
#include <stdlib.h>
void my_qsort(void* base, size_t num, size_t size, int(*cmp)(const void*, const void*))
{
	int i = 0;
	for (i; i < num - 1; i++)
	{
		int j = 0;
		int flag = 0; //如一趟都没有交换,即已经排完序,无需再排序,跳出循环;
		for (j; j < num - 1 - i; j++)
		{
            //比较函数
			if (cmp((char*)base + j * size, (char*)base + (j + 1) * size) > 0) 
			{
				//直接交换每个字节数据
				int k = 0;
				for (k; k < size; k++)
				{
					char tmp = *((char*)base + j * size + k);
					*((char*)base + j * size + k) = *((char*)base + (j + 1) * size + k);
					*((char*)base + (j + 1) * size + k) = tmp;
				}
				flag = 1;
			}
		}
		if (0 == flag)
			break;
	}
}

int cmp(const void* elm1, const void* elm2)
{
	return *((int*)elm1) - *((int*)elm2);
}

int main()
{
	int arr[] = { 9,8,7,6,5,1,2,3,4 };
	int num = sizeof arr / sizeof arr[0];
	int size = sizeof arr[0];
	my_qsort(arr, num, size, cmp);
    return 0;
}

Seafile搭建以及onlyoffice在线办公 部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # mysql root的密码,同时修改 seafile的DB_ROOT_PASSWD与这个一致 - MYSQL_LOG_CONSOLE 阅读详情

相关推荐

村田电感模型选型指南:.s2p和SPICE netlist在ADS中的表现差异

本文深度解析了村田电感在ADS仿真中.s2p与SPICE netlist两种模型的表现差异。通过对比模型本质、仿真设置及高低频段精度,揭示了.s2p文件基于实测插值而SPICE netlist基于等效电路外推的特性。文章提供了明确的选型策略,帮助工程师根据项目频段、仿真类型和精度需求,在射频与微波电路设计中做出最优模型选择。

k9l0m1的博客 452

qsort函数详情

文章目录1.回调函数2.qsort函数的使用3.qsort函数的模拟实现 1.回调函数 2.qsort函数的使用 3.qsort函数的模拟实现 PS:void

weixin_57023347的博客 1614

给IC设计新人的Tessent Scan入门指南:从RTL到ATPG的完整DFT流程解析

本文为IC设计新手提供Tessent Scan的完整DFT流程指南,从RTL代码检查到ATPG测试向量生成,详细解析扫描链配置、插入及验证的关键步骤。通过实战案例和工具命令示例,帮助工程师快速掌握Tessent工具链的应用技巧,提升芯片可测试性设计的效率和质量。

weixin_32541663的博客 451

库函数qsort的使用和模拟实现(冒泡)

对于任意类型都能实现冒泡排序的实现的库函数qsort()和模拟实现qsort()函数

m0_68338525的博客 588

矿卡CMP 170HX的AI推理性能优化实战

GPU计算在现代AI推理中扮演着核心角色,其并行计算架构特别适合处理神经网络的大规模矩阵运算。通过CUDA指令集优化和计算管线重构,可以显著提升硬件利用率,这在边缘计算和带宽敏感型任务中尤为重要。以NVIDIA CMP 170HX矿卡为例,通过禁用FMA指令和框架适配优化,其FP32性能可提升15.9倍,在Qwen2.5-1.5B模型的4-bit量化推理中达到A100同架构78%的解码速度。这种优化技术不仅让淘汰矿卡重获新生,更为边缘AI部署提供了高性价比解决方案,特别适合7B以下量化模型部署和多路视频分析

weixin_30432579的博客 625

强化学习新手上路:用PPO-Clip轻松玩转Pendulum-v1(PyTorch保姆级教程)

本文提供了一份基于PyTorch的PPO-Clip算法实战教程,指导强化学习新手在Pendulum-v1环境中构建连续控制智能体。教程详细解析了PPO-Clip的核心机制,特别是其Clip机制如何限制策略更新幅度以确保训练稳定,并涵盖了从环境配置、策略网络设计、经验收集到完整训练框架搭建的全过程,是掌握连续动作空间强化学习的实用指南。

weixin_29062963的博客 270

库函数 qsort 的用法

qsort是一个库函数 基于快速排序算法实现的一个排序的函数 语法 void qsort( void *base, size_t number, size_t width, int(*cmp)( const void* e1 , const void* *e2) ); 参数 base 目标数组的函数。 number 元素中的数组大小。 width 元素大小(字节)。 cmp 指向用户提供的例程的指针比较两个数组元素,并返回指定它们关系的值。 ...

m0_58761900的博客 2134

制作INCA和CANape通用的A2L

CANape和INCA通用的A2L配置与修改

赞的博客 5960

python的qsort算法

python的算法简要到你可以见性直指: def q_sort(l): if len(l)<=1: return l else: p=l[0] small_part=[x for x in l[1:] if x<p] big_part=[x for x in l[1:] if x>=...

weixin_30952535的博客 472

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1062

luks-磁盘加密工具

linux磁盘加密配置工具及步骤详解

zdd56789的博客 120

快速排序的四种python实现

快速排序算法,简称快排,是最实用的排序算法,没有之一,各大语言标准库的排序函数也基本都是基于快排实现的 本文用python语言介绍四种不同的快排实现 1. 一行代码实现的简洁版本 quick_sort = lambda array: array if len(array) array[0]]) 2. 网上常见的快排实现 def quick_sort(array, left

Razor87的专栏 10万+

基于YOLOv26的智能农业无人机巡检系统

本文提出了一种基于YOLOv26的智能农业无人机巡检系统。系统采用模块化设计,包含数据采集、预处理、目标检测、图像拼接、分析决策和部署控制六大核心模块。无人机搭载多光谱相机、RGB相机和热红外相机进行农田数据采集,通过YOLOv26实现作物病虫害、杂草及灌溉设备的检测。系统采用PyTorch、OpenCV等技术栈,支持无人机自动路径规划和多传感器数据采集,并包含数据增强和预处理功能。该系统可有效提升农业巡检效率,为精准农业提供智能化解决方案。

一键难忘的博客 807

库函数qsort的使用及利用冒泡排序模拟实现qsort

今天阿辉将为大家介绍库函数qsort的使用,还包括利用冒泡排序模拟实现qsort以及void*类型的指针,关注阿辉不迷路哦 😘 ,内容干货满满😋,接下来就跟着阿辉一起学习吧👊。

m0_75108739的博客 2368

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

好用的库函数,qsort函数大详解(干货满满!)(初阶)

我们不要过度依赖库函数,要有着自己的思想,如今很多人说现在是AI时代,AI时代会淘汰程序员这种话,我觉着这是错误的,因为AI终究是机器思想,它可能会帮我们去干一些活,虽然很好用,但也会让我们不在想思考,让我们思考能力下降,所以我们也是不能一直依赖AI,我们要会自己思考,况且程序员也是不断在学习的,目前程序员还是无法被淘汰的,这里说了不少脱离文章本身的话,也是通过滥用库函数而感慨一些了。透过现象看本质 ,明白它背后的逻辑,懂得此代码为什么去写!2.冒泡排序和qsort的代码比较。

effort123_的博客 2567

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

好用的库函数,qsort函数大详解(干货满满!)(进阶)

交换操作可以通过我们再写一个交换函数来进行数值的交换,我们在交换的时候,要考虑到我们传参的时候不一定传的就是整型,我们上面式子的交换是只是针对整形的,对于字符型的,小编认为,我们可以通过一个一个字节的来进行交换,这样的话,我们既可以针对字符型,也可以针对整型了,现在我们已经有了这个函数的大致思路了,下面就我们就来进行函数的写正式描写喽!大家平常一定要多复习自己学过的知识,避免忘记过多,明天可能会停更一天,小编歇一天,如果文章有错误,恳请大家指出,小编虚心求教,我们下一篇博客见喽!

effort123_的博客 2350

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【C进阶】qsort函数详解

qsort函数详细的解释,阅读完此文章,相信大家会对qsort函数有很深的理解!!!

m0_70088010的博客 2626

【排序】什么都能排的C语言qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序

【排序】什么都能排C语言的qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序。超级详细的宝藏教程,干货满满啊不要错过!不收藏必后悔系列

系统编程、网络编程 2476

你应该知道的C语言干货(6)(qsort详解及模拟实现)

你是否在比较后移动结构体数据觉得非常麻烦,是否觉得冒泡函数不方便,那qsort就是一个很好的选择,qsort库函数详解及模拟实现

m0_74824254的博客 203

qsort快排库函数的使用方法(不讲原理只有使用干货)

qsort快排库函数的使用方法,无原理只有使用干货!

这个博主不懒,但Ta什么也没写~(私信互关24小时必回) 264

常用库函数_干货!C语言常用标准库解读

一、标准定义()类型size_t(sizeof运算符的结果类型,是某个无符号整型);类型ptrdiff_t(两个指针相减运算的结果类型,是某个有符号整型);类型wchar_t(宽字符类型,是一个整型,其中足以存放本系统所支持的所有本地环境中的字符集的所有编码值。这里还保证空字符的编码值为0);符号常量NULL(空指针值);宏offsetot(这是一个带参数的宏,第一个参数应是一个结构...

weixin_39661353的博客 179

【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现

一、转移表 二、回调函数是什么? 三、qsort函数细解 3.1 类比冒泡排序? 3.2 qosrt函数超详解 3.2.1qsort函数排序整型数据 3.2.2 使⽤qsort排序结构数据 四、 qsort函数的模拟实现 4.1 模拟qsort整形数据 4.2 模拟`qsort`排序结构数据

a_sen的博客 1628

2024年最新qsort函数详解(C语言排序界的神兵)_qsort cyuayn(1),【干货】

大家好,我是纪宁。这篇文章将为大家带来一个非常厉害的函数,可以迅速解决大家遇到的大部分的排序问题,在没学习数据结构与算法之前,这个函数就是排序界的神!

2401_84976104的博客 970

15.13【保姆级教程】C语言函数指针:从0到1吃透原理+实战,玩转qsort万能排序!

本文深入讲解C语言函数指针的核心概念与应用。文章首先通过排序不同类型数组的痛点问题,引出函数指针的价值——将比较规则封装为函数并通过指针传递,实现通用逻辑(如qsort)。随后详细拆解函数指针的声明语法(int (*fp)(int, int)),对比普通指针与函数指针的区别,并通过加法/乘法运算示例演示赋值与调用方法。重点剖析函数指针作为参数的用法,以通用计算器和手写排序函数为例,展示如何通过回调函数实现动态逻辑。最后通过模拟qsort的my_sort函数,揭示通用排序的底层实现原理:利用void*处理任意

BackCatK Chen的博客 1107

排序算法还在手写?万能排序神器qsort函数,搞定90%笔试面试!

排序算法还在手写?万能排序神器qsort函数,搞定90%笔试面试!

萧邯嵌入式笔记 1161

2024年C C++最全冒泡排序实现快速排序qsort C语言,2024年最新满满的干货

首先祝大家新年快乐🎉 🎉 🎉!hello✨,大家好呀,这里是💖 💛💙,随着文章篇幅越来越多可能有很多小伙伴们找不到自己想要看的文章,所以我就出来啦,这里附带各文章链接哈。🎁 🎁 🎁的和都整理在了哈,进阶篇也在快赶了,用不了一周应该也就完成了,然后是个人主页,比点头像更好找文章哈。再是初阶的数据结构,就只剩下二叉树和八大排序了,后面会总结,链接也会放在这里哈。后面的话应该就会更c++和linux的知识了,当然,进阶的数据结构也会在c++中更新哈😜。

2401_84975342的博客 423
上一篇: 完全自学C(干货) —— 指针进阶
下一篇: 完全自学C(干货) —— 字符(串)函数
挨代码
博客等级 码龄5年 1696粉丝 384原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值