当前位置: 首页 > news >正文

用冒泡排序法模拟qsort函数

目录

1.前言

2.qsort函数的介绍

​3.冒泡法回顾

4.模拟qsort---buble_sort

4.1 buble_sort格式

4.2 主函数,以int类型为例

4.3comp_int函数的功能设计

4.4 swap函数的功能设计

5. 总代码概览


1.前言

今天,小邓儿带大家用冒泡排序法来模拟一下qsort函数,废话不都说,咱们开整。

2.qsort函数的介绍

void qsort( void *base,     //指向的要比较数组的起始地址

                     size_t num,   // 数组大小(元素总数)

                     size_t width,   //数组中一个元素的大小(单位字节)

                      int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

                     //比较elem1和elem2的大小,下图为qsort函数第4个参数的描述 

3.冒泡法回顾​​​​​​​

一共进行sz-1趟循环,每一趟又依次比较一个数和它后面一个数的大小,最终按从小到大的默认顺序进行排列。

4.模拟qsort---buble_sort

4.1 buble_sort格式

void bubble_sort(void* base,
                             int sz,
                             int width,
                             int(*comp)(const void*, const void*));

具体函数内部情况如下图

这里的bublue_sort函数,先是会调用comp函数进行两个数的比较,经过判断后,再会调用swap函数进行交换

4.2 主函数,以int类型为例

现在,咱们需要用comp_int来模拟实现compare函数的功能。

4.3comp_int函数的功能设计

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

//这里参考下图compare的功能

Return ValueDescription
< 0elem1 less than elem2
0elem1 equivalent to elem2
> 0

elem1 greater than elem2

4.4 swap函数的功能设计

5. 总代码概览

#include<stdio.h>
#include<string.h>
int comp_int(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;
}
void swap(char* e1, char* e2, int width)
{int i = 0;for (i = 0; i < width;i++){int t = *e1;*e1 = *e2;*e2 = t;e1++;e2++;}
}
void bubble_sort(void* base,int sz,int width,int(*comp)(const void*, const void*))//传过来的形参是指针
{int i, j;for (i = 0; i < sz - 1; i++){int flag = 1;//按从小到大顺序排列for (j = 0; j < sz - 1 - i; j++){if (comp((char*)base + j * width, (char*)base + (j + 1) * width )>0)//comp的实参是两个地址{swap((char*)base + j * width, (char*)base + (j + 1) * width,width);flag = 0;//未按顺序排列}}if (flag == 1){break;}}
}
void Print(int arr[], int sz)
{int i = 0;for (i = 0; i < sz - 1; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}
int main()
{int arr[] = { 1,2 ,4 ,3, 6,5,7,9,0 };int sz ;sz = sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz, sizeof(arr[0]), comp_int);Print(arr,sz);
}

好了,小邓儿今天的分享就到这里了,欢迎老铁们点赞收藏😄😄😄

相关文章:

用冒泡排序法模拟qsort函数

目录 1.前言 2.qsort函数的介绍 ​3.冒泡法回顾 4.模拟qsort---buble_sort 4.1 buble_sort格式 4.2 主函数&#xff0c;以int类型为例 4.3comp_int函数的功能设计 4.4 swap函数的功能设计 5. 总代码概览 1.前言 今天&#xff0c;小邓儿带大家用冒泡排序法来模拟一下qs…...

DCN讲解

DCN是DeepFM的升级版&#xff0c;后者是只能做二阶交叉特征&#xff0c;随着阶数上升&#xff0c;模型复杂度大幅提高&#xff0c;且FM网络层较浅&#xff0c;表达能力有限。google团队通过构建深度交叉网络来自动进行特征的高阶交叉&#xff0c;且时空复杂度均为线性增长&…...

nginx的作用和应用场景

Nginx 是一款高性能的开源 Web 服务器和反向代理服务器&#xff0c;以其高效处理高并发连接和低资源消耗著称。以下是其核心作用及典型应用场景的详细解析&#xff1a; 一、Nginx 的核心作用 1. 静态资源服务器 功能&#xff1a;直接托管 HTML、CSS、JavaScript、图片等静态文…...

[Lc滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…...

基于python的网络爬虫爬取天气数据及可视化分析(Matplotlib、sk-learn等,包括ppt,视频)

基于Python爬取天气数据信息与可视化分析&#xff08;文末完整源码&#xff09; 基于python的网络爬虫爬取天气数据及可视化分析 可以看看演示视频。 摘要 基于Python爬取天气数据信息与可视化分析 本论文旨在利用Python编程语言实现天气数据信息的爬取和可视化分析。天气…...

【缓存】缓存雪崩与缓存穿透:高并发系统的隐形杀手

缓存雪崩与缓存穿透&#xff1a;高并发系统的隐形杀手 在高并发系统中&#xff0c;缓存是提升性能的重要手段。然而&#xff0c;缓存使用不当也会带来一系列问题&#xff0c;其中最常见的就是缓存雪崩和缓存穿透。这两个问题如果不加以解决&#xff0c;可能会导致系统崩溃&…...

HTML AI 编程助手

HTML AI 编程助手 引言 随着人工智能技术的飞速发展&#xff0c;编程领域也迎来了新的变革。HTML&#xff0c;作为网页制作的基础语言&#xff0c;与AI技术的结合&#xff0c;为开发者带来了前所未有的便利。本文将探讨HTML AI编程助手的功能、应用场景以及如何利用它提高编程…...

李宏毅机器学习课程学习笔记04 | 浅谈机器学习-宝可梦、数码宝贝分类器

文章目录 案例&#xff1a;宝可梦、数码宝贝分类器第一步&#xff1a;需要定义一个含有未知数的function第二步&#xff1a;loss of a function如何Sample Training Examples > 如何抽样可以得到一个较好的结果如何权衡模型的复杂程度 Tradeoff of Model Complexity todo 这…...

AIGC(生成式AI)试用 26 -- 跟着清华教程学习 - DeepSeek与AI幻觉

目标&#xff1a;继续学习 个人理解&#xff1a; - AI幻觉&#xff1a;一本正经的胡说八道&#xff0c;你还觉得很道理&#xff0c;倾向于相信&#xff1b;事实不一致&#xff0c;指令(预期)与实际不一致&#xff1a;跑题 - 潜在风险&#xff1a;把AI带坏了&#xff1b;信息误…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump

ngx_conf_add_dump 定义在src\core\ngx_conf_file.c static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) {off_t size;u_char *p;uint32_t hash;ngx_buf_t *buf;ngx_str_node_t *sn;ngx_conf_dump_t *cd;has…...

QEMU源码全解析 —— 内存虚拟化(23)

接前一篇文章:QEMU源码全解析 —— 内存虚拟化(22) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 QEMU内存管理模型...

【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…...

TypeScript 类型声明

在 TypeScript 开发中简化类型声明&#xff0c;可以通过以下 7 种实用技巧 显著提升效率&#xff1a; 一、善用类型推断&#xff08;30% 场景免声明&#xff09; // ❌ 冗余写法 const user: { name: string; age: number } { name: Jack, age: 25 };// ✅ 自动推断&#xff…...

从0搭建Tomcat第二天:深入理解Servlet容器与反射机制

在上一篇博客中&#xff0c;我们从0开始搭建了一个简易的Tomcat服务器&#xff0c;并实现了基本的HTTP请求处理。今天&#xff0c;我们将继续深入探讨Tomcat的核心组件之一——Servlet容器&#xff0c;并介绍如何使用反射机制动态加载和管理Servlet。 1. Servlet容器的作用 S…...

【Python】yield函数

【Python】yield函数 1. yield介绍2.yield基本用法3.yield高级用法3.1 yield send() 方法3.2 yield from方法3.3 yield 和yield from叠加处理复杂情况下的叠加 4.yield主要应用场景5.总结 python官方api地址 1. yield介绍 在Python中&#xff0c;yield关键字主要用于生成器函…...

Android13修改多媒体默认音量

干就完了! 设置音量为最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…...

nginx+keepalived负载均衡及高可用

一、环境准备 主机名ip地址备注openEuler-1 192.168.121.11&#xff08;本机&#xff09; 192.168.131.11&#xff08;心跳连接&#xff09; nginx主负载均衡调度器openEuler-2 192.168.121.12&#xff08;本机&#xff09; 192.168.131.12&#xff08;心跳连接&#xff09; n…...

SP导入智能材质球

智能材质球路径 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就会自动刷新...

Kotlin语言特性(一):空安全、扩展函数与协程

Kotlin语言特性&#xff08;一&#xff09;&#xff1a;空安全、扩展函数与协程 一、引言 Kotlin作为Android官方推荐的开发语言&#xff0c;相比Java具有诸多现代化特性。本文将重点介绍Kotlin三个最具特色的语言特性&#xff1a;空安全、扩展函数和协程&#xff0c;并结合A…...

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接

官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…...

别再瞎找了!盘点2026年碾压级的的降AIGC网站

轻松降低论文AI率在2026年已不再是天方夜谭。以下是2026年最炸裂、实测效果显著的降AIGC网站神器&#xff0c;覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景&#xff0c;帮你稳妥搞定毕业论文。 一、全流程王者&#xff1a;一站式搞定论文全链路 这类工具…...

Godot开源RPG框架选型与状态契约构建指南

1. 这不是又一个“Godot入门教程”&#xff0c;而是一套可落地的RPG世界构建方法论 你有没有试过打开Godot&#xff0c;新建一个项目&#xff0c;拖进几个精灵&#xff0c;写两行 move_and_slide() &#xff0c;然后卡在“接下来该做什么”上&#xff1f;我做过——整整三年前…...

从塑造品牌形象到沉淀行业公信力软文营销品效合一落地路径及平台选择技巧

当下企业软文营销已经告别只追求表面曝光的初级阶段,进入品牌背书流量曝光线索转化品效合一的成熟时代。单纯追求发稿数量、追求媒体覆盖面,无法为企业带来实际商业价值;只有打通内容传播、品牌信任、受众触达、咨询引流的完整链路,让软文既能塑造品牌形象、沉淀行业公信力,又能…...

保姆级教程:在Ubuntu 22.04上从源码编译RISC-V SPIKE模拟器(含libboost报错解决)

从零构建RISC-V开发环境&#xff1a;Ubuntu 22.04下SPIKE模拟器深度编译指南 当第一次接触RISC-V生态时&#xff0c;搭建可靠的开发环境往往成为新手面临的第一个挑战。作为RISC-V官方推荐的指令集模拟器&#xff0c;SPIKE以其轻量级和准确性成为学习RISC-V架构的理想工具。本文…...

Spingboot企业员工信息管理系统—免费毕设源码分享28210

摘要本论文介绍了基于Spring Boot框架开发的“传奇今生企业员工信息管理系统”。系统提高企业人力资源管理的效率和精确度&#xff0c;通过数字化手段优化员工信息管理流程&#xff0c;提升企业管理水平。系统分为用户端和管理员端&#xff0c;提供了丰富的功能模块。用户端功能…...

Stacking集成在脑瘤影像分类中的临床价值与实操要点

1. 项目概述&#xff1a;为什么 stacking 不是“堆叠玩具”&#xff0c;而是脑瘤分类里最值得细嚼的那块硬骨头在医学影像AI落地的真实战场上&#xff0c;单模型准确率卡在92%就再也上不去&#xff0c;不是因为数据不够多&#xff0c;也不是因为GPU不够猛&#xff0c;而是因为不…...

终极QQ空间备份指南:用GetQzonehistory永久保存你的青春记忆

终极QQ空间备份指南&#xff1a;用GetQzonehistory永久保存你的青春记忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否也曾担心多年积累的QQ空间说说会随着时间消失&#xff1f…...

GM-CSF (54-78) ;CLQTRLELYKQGLRGSLTKLKGPLT

一、基础信息中文名称&#xff1a;粒细胞 - 巨噬细胞集落刺激因子片段 (54-78)英文名称&#xff1a;Granulocyte-Macrophage Colony-Stimulating Factor (54-78)三字母序列&#xff1a;Cys-Leu-Gln-Thr-Arg-Leu-Glu-Leu-Tyr-Lys-Gln-Gly-Leu-Arg-Gly-Ser-Leu-Thr-Lys-Leu-Lys-G…...

MultiHighlight插件:让代码阅读不再痛苦的终极解决方案

MultiHighlight插件&#xff1a;让代码阅读不再痛苦的终极解决方案 【免费下载链接】MultiHighlight Jetbrains IDE plugin: highlight identifiers with custom colors &#x1f3a8;&#x1f4a1; 项目地址: https://gitcode.com/gh_mirrors/mu/MultiHighlight 你是否…...

Java类与对象:编程核心解密

好的&#xff0c;我们来详细解释一下Java中的类和对象这两个核心概念。1. 类 (Class)定义&#xff1a;类是一个模板或蓝图。它定义了某一类“事物”的共同特征&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;。作用&#xff1a;类描述了该种“事物”具有哪些信…...