C语言实现排序介绍
C语言学习都会学到排序算法,下面实现两个排序算法:
#include <stdio.h>// 冒泡排序
void bubble_sort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
小结
冒泡排序和快速排序。其中,冒泡排序通过多次遍历数组,将相邻元素进行比较和交换,使得较大的元素逐渐沉底,较小的元素逐渐浮出。
// 快速排序
void quick_sort(int arr[], int left, int right) {if (left >= right) {return;}int pivot = arr[left];int i = left + 1;int j = right;while (i <= j) {if (arr[i] < pivot && arr[j] > pivot) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;i++;j--;} else if (arr[i] >= pivot) {i++;} else if (arr[j] <= pivot) {j--;}}int temp = arr[j];arr[j] = arr[left];arr[left] = temp;quick_sort(arr, left, j - 1);quick_sort(arr, j + 1, right);
}
小结
快速排序则通过选定一个基准元素,将数组分成两部分,使得一部分的元素都小于基准元素,另一部分的元素都大于基准元素,然后对这两部分分别进行递归排序。
int main() {int arr[] = {5, 3, 8, 4, 2, 7, 1, 6};int n = sizeof(arr) / sizeof(int);printf("Original array: ");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");bubble_sort(arr, n);printf("Bubble sort result: ");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");quick_sort(arr, 0, n - 1);printf("Quick sort result: ");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}
总结
冒泡排序和快速排序在性能上有一些显著的差异。下面是它们之间的一些比较:
- 时间复杂度:这是两种排序算法最主要的区别。冒泡排序的时间复杂度是O(n^2),这意味着随着输入数据量的增加,所需时间将呈二次方增长。而快速排序的时间复杂度在理想情况下是O(nlogn),这使得它在处理大量数
据时比冒泡排序更高效。 - 空间复杂度:这是另一个重要的考虑因素。冒泡排序的空间复杂度是O(1),因为它只需要常量级别的额外空间。而快速排序由于递归和辅助栈的使用,其空间复杂度是O(logn),在处理大量数据时可能会占用较多的内
存。 - 稳定性:冒泡排序是稳定的,这意味着相等的元素将保持其原始顺序。而快速排序是不稳定的,因为它在某些情况下可能会导致原始顺序的改变。
- 实际性能:在实际应用中,两种算法的性能取决于具体的数据和实现。例如,当数据量较小时,冒泡排序可能会比快速排序更快,因为它的简单性。而在处理大量数据时,快速排序则可能更优,因为它利用了分而治之的
原则,将大问题分解为更小的问题来解决。
总的来说,选择哪种排序算法取决于你的具体需求,包括数据量的大小、内存限制、稳定性需求等因素。
相关文章:
C语言实现排序介绍
C语言学习都会学到排序算法,下面实现两个排序算法: #include <stdio.h>// 冒泡排序 void bubble_sort(int arr[], int n) {for (int i 0; i < n - 1; i) {for (int j 0; j < n - i - 1; j) {if (arr[j] > arr[j 1]) {int temp arr[j…...
64位ATT汇编语言使用bss段.skip指令储存字符,并使用系统调用输出字符
.global main .section .data .section .bss# 需要输出的字符数组,还没有初始化mystring: .skip 4 .section .text main:# 将mystring这个字符串的地址存入到rbx寄存器中leaq mystring,%rbx# 将a放入到mystring第一个字节里边movb $a,(%rbx)# 将地址往后边移动一个字…...
贝锐蒲公英路由器X4C如何远程访问NAS?
在目前网盘前路坎坷的情况下,私人云盘已然是一种新的趋势!那自己打造一个私有云盘,是否需要高成本或是高门槛呢?其实并不用!蒲公英针对个人玩家打造了全方位的私有云解决方案。 (1)入门级玩家只…...
Golang Context 的使用指南
Golang Context 的使用指南 1. 什么是 Context 在 Golang 中,Context 是一个用于跨 goroutine 传递数据、取消任务以及超时控制的标准库。它提供了一种从父 goroutine 向子 goroutine 传递请求或控制信息的机制,可以有效地管理和控制 goroutine 的生命…...
vue3使用西瓜播放器播放flv、hls、mp4视频
vue3使用西瓜播放器播放flv、hls、mp4视频 安装相关的插件 npm install xgplayer npminstall xgplayer-flv npm install xgplayer-hls npm install xgplayer-mp4 组件封装 <template><div :id"${playerId}" /> </template> <script setup la…...
【Promise12数据集】Promise12数据集介绍和预处理
【Segment Anything Model】做分割的专栏链接,欢迎来学习。 【博主微信】cvxiayixiao 本专栏为公开数据集的介绍和预处理,持续更新中。 要是只想把Promise12数据集的raw形式分割为png形式,快速导航,直接看2,4标题即可 …...
Qt设置整体背景颜色
this->setStyleSheet("border:none;background-color:white");...
Stream流常见操作
.stream() 常用方法 .forEach() 该方法接收一个 Consumer 接口函数,会将每一个流元素交给该函数进行处理 .filter():过滤 该接口接收一个 Predicate 函数式接口参数(可以是一个Lambda或方法引用)作为筛…...
INFINI Labs 产品更新 | 发布 Easysearch Java 客户端,Console 支持 SQL 查询等功能
近年来,日志管理平台越来越流行。使用日志管理平台可以实时地、统一地、方便地管理和查看日志,挖掘日志数据价值,驱动运维、运营,提升服务管理效率。 方案架构 Beats 是轻量级采集器,包括 Filebeat、Metricbeat 等。E…...
前端调试只会console.log()?
前言 相信大家在日常开发中调试代码是必不可少的步骤,毕竟谁也不能保证代码不出问题,总得debug一下,输出信息看看数据有没有问题。是不是习惯性console.log(‘XXX’)或者debugger呢。而JavaScript中的console对象提供了丰富的方法用于更灵活…...
CentOS Linux release 7.9.2009 (Core)中安装配置Tomcat
一、安装JDK 部分内容可以参考我这篇文章:Windows11与CentOS7下配置与检测JDK与Maven环境变量 中的 2.2 安装jdk-8u371-linux-x64.tar.gz和配置环境变量/etc/profile //1、安装redhat-lsb yum install -y redhat-lsb//2、查看系统版本信息 lsb_release -a //3、查…...
移动机器人路径规划(四)--- 考虑机器人模型下的运动规划KINODYNAMIC PATHFINDING
目录 1 动力学概念简介 2 State Lattice Planning 3 Boundary Value Problem 4 混合A*算法 Hybrid A* 5 Kinodynamic RRT* 1 动力学概念简介 一种生成机器人的运动同时受限制于运动学的约束(避障)以及动力学的约束(在速度加速度力的约束…...
服务器数据恢复—VMware虚拟化下误操作导致服务器崩溃的数据恢复案例
服务器故障&分析: VMware虚拟化,vmfs文件系统,共3块磁盘。工作人员误操作将VMware虚拟化重装系统,服务器崩溃。 正常情况下,重装系统会导致文件系统元文件被覆盖。要恢复数据须找到重装系统前的文件系统残留信息并…...
微服务实战系列之Gateway
前言 人类世界自工业革命以来,无论从金融、货币、制度,还是科技、资源、社会各个方面,都发生了翻天覆地的变化。物质极大丰富,从而也推动了科技的极速发展。当计算机问世也仅仅不到80年,而如今我们的生活处处有它的影子…...
GZ038 物联网应用开发赛题第10套
2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第10套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考…...
重生之我是一名程序员 35
哈喽啊大家晚上好!今天给大家带来的知识很简单啊,所以今天呢给大家带来的是C语言中的另一个库函数——strlen。 首先,让我先给大家介绍一下它,strlen函数是C语言中的一个字符串处理函数,它用于计算一个字符串的长度&a…...
计算机毕业设计选题推荐-点餐微信小程序/安卓APP-项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
分享禁止Win10更新的两种方法
深恶痛绝 Windows更新简直就是毒瘤,总是在某些不需要的时候提示更新,而且关闭服务后总有办法重启。老是关不掉。 如果每次都是正常更新,好像也没啥所谓,但是总有那么一两次会蓝屏、黑屏、开不了机…… 52出品 下面是吾爱社区找…...
SPASS-回归分析
回归分析概述 确定性关系与非确定性关系 变量与变量之间的关系分为确定性关系和非确定性关系,函数表达确定性关系。研究变量间的非确定性关系,构造变量间经验公式的数理统计方法称为回归分析。 回归分析基本概念 回归分析是指通过提供变量之间的数学表达式来定量描述变量间…...
【使用vscode在线web搭建开发环境--code-server搭建】
官方版本下载 https://github.com/coder/code-server/releases?q4.0.0&expandedtrue使用大于版本3.8.0,因为旧版本有插件市场不能访问的情况版本太高需要更新环境依赖 拉取安装包 []# wget "https://github.com/coder/code-server/releases/download/v4.0.0/code-…...
快速原型验证:如何用快马AI一键生成50台云桌面的基础管理脚本
快速原型验证:如何用快马AI一键生成50台云桌面的基础管理脚本 最近在研究虚拟化技术,想验证一个想法:一台主机能否支撑50台云桌面的运行?传统方式搭建测试环境太费时,手动配置KVM或Docker既复杂又容易出错。好在发现了…...
GetQzonehistory:数字记忆保护的本地化方案——个人数据主权守护者的完整指南
GetQzonehistory:数字记忆保护的本地化方案——个人数据主权守护者的完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 问题引入:当数字记忆面临蒸发危机 …...
《QGIS快速入门与应用基础》259:图片尺寸与裁剪
作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...
3步突破开发工具限制:开源项目实现IDE持续使用指南
3步突破开发工具限制:开源项目实现IDE持续使用指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 定位开发痛点:IDE试用限制的实际影响 作为一名全栈开发者,我曾在一个紧急项…...
磁力链接聚合搜索工具magnetW:一站式解决你的资源查找难题
磁力链接聚合搜索工具magnetW:一站式解决你的资源查找难题 【免费下载链接】magnetW [已失效,不再维护] 项目地址: https://gitcode.com/gh_mirrors/ma/magnetW 在数字资源日益丰富的今天,如何高效地找到所需的影视、软件和学习资料成…...
旧iOS设备焕新指南:用Legacy iOS Kit赋予旧iPhone/iPad第二次生命
旧iOS设备焕新指南:用Legacy iOS Kit赋予旧iPhone/iPad第二次生命 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iO…...
OpenClaw技能市场挖掘:Qwen3.5-9B加持的5个高效办公技能
OpenClaw技能市场挖掘:Qwen3.5-9B加持的5个高效办公技能 1. 为什么选择Qwen3.5-9B作为办公助手 去年冬天,当我第一次在本地部署Qwen3.5-9B模型时,就被它在办公场景下的表现惊艳到了。相比之前使用的7B版本,这个模型在理解复杂办…...
JiYuTrainer:如何在不影响学习的前提下解除极域电子教室限制的3种方法
JiYuTrainer:如何在不影响学习的前提下解除极域电子教室限制的3种方法 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 在数字化教学环境中,极域电子教室&a…...
微信小程序+Pixel Couplet Gen:多语言切换(中/英/日)技术实现
微信小程序Pixel Couplet Gen:多语言切换(中/英/日)技术实现 1. 项目背景与核心价值 Pixel Couplet Gen是一款融合传统春节文化与现代像素游戏风格的创新应用。通过ModelScope大模型驱动,它能生成独特的马年像素春联,…...
intv_ai_mk11高效提示词库:10个已验证高效果指令模板(含电商/技术/写作类)
intv_ai_mk11高效提示词库:10个已验证高效果指令模板(含电商/技术/写作类) 1. 引言:为什么需要好的提示词 在与AI对话机器人交互时,提示词的质量直接影响回答效果。就像和人交流一样,问得清楚才能得到准确…...
