C 语言_常见排序算法全解析

排序算法是计算机科学中的基础内容,本文将介绍 C 语言中几种常见的排序算法,包括实现代码、时间复杂度分析、适用场景和详细解析

一、冒泡排序(Bubble Sort)

基本思想:重复遍历数组,比较相邻元素,将较大元素交换到右侧。

代码实现

void bubbleSort(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;}}}
}

详细图解
以数组 [5, 3, 8, 4, 6] 为例:

  1. 第一轮:比较 5 和 3,交换得 [3, 5, 8, 4, 6];比较 5 和 8,不交换;比较 8 和 4,交换得 [3, 5, 4, 8, 6];比较 8 和 6,交换得 [3, 5, 4, 6, 8]。最大元素 8 移到末尾。
  2. 第二轮:处理前 4 个元素 [3, 5, 4, 6],比较后得 [3, 4, 5, 6, 8]
  3. 第三轮:处理前 3 个元素 [3, 4, 5],数组已有序,但算法仍需继续。
  4. 第四轮:处理前 2 个元素 [3, 4],最终完成排序。
二、选择排序(Selection Sort)

基本思想:每次从未排序部分选择最小元素,放到已排序部分末尾。

代码实现

void selectionSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int min_idx = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[min_idx]) {min_idx = j;}}if (min_idx != i) {int temp = arr[i];arr[i] = arr[min_idx];arr[min_idx] = temp;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JIT+Opcache如何配置才能达到性能最优

首先打开php.ini文件&#xff0c;进行配置 1、OPcache配置 ; 启用OPcache opcache.enable1; CLI环境下启用OPcache&#xff08;按需配置&#xff09; opcache.enable_cli0; 预加载脚本&#xff08;PHP 7.4&#xff0c;加速常用类&#xff09; ; opcache.preload/path/to/prel…

Python训练打卡Day23

机器学习管道 pipeline 基础概念 pipeline在机器学习领域可以翻译为“管道”&#xff0c;也可以翻译为“流水线”&#xff0c;是机器学习中一个重要的概念。 在机器学习中&#xff0c;通常会按照一定的顺序对数据进行预处理、特征提取、模型训练和模型评估等步骤&#xff0c;以…

GPU SIMT架构的极限压榨:PTX汇编指令级并行优化实践

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 一、SIMT架构的调度哲学与寄存器平衡艺术 1.1 Warp Scheduler的调度策略解构 在NVIDIA GPU…

HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(二、项目准备与后台服务搭建)

在开发一款面向HarmonyOS平台的应用程序——【诗韵悠然】AI古诗词赏析APP时&#xff0c;选择了流行Go语言作为后端开发语言&#xff0c;并使用了go-zero微服务框架来搭建服务接口。本文将详细介绍项目准备和后台服务搭建的过程&#xff0c;帮助大家更好地理解和掌握go-zero框架…

QT5.14安装以及新建基础项目

进入qt中文网站&#xff1a;Qt | 软件开发全周期的各阶段工具 额&#xff0c;考虑新手可能还是找不到&#xff0c;我就分享一下我下载的的吧 通过网盘分享的文件&#xff1a;qt-opensource-windows-x86-5.14.2.exe 链接:https://pan.baidu.com/s/1yQTRp-b_ISje5B3UWb7Apw?pw…

深入解析 I/O 模型:原理、区别与 Java 实践

一、I/O 模型的核心概念 I/O 操作的本质是数据在用户空间&#xff08;应用程序内存&#xff09;和内核空间&#xff08;操作系统内核内存&#xff09;之间的传输。根据数据准备与拷贝阶段的处理方式不同&#xff0c;I/O 模型可分为以下五类&#xff1a; 阻塞 I/O&#xff08;…

EMQX v5.0通过连接器和规则同步数据

1 概述 EMQX数据集成功能&#xff0c;帮助用户将所有的业务数据无需额外编写代码即可快速完成处理与分发。 数据集成能力由连接器和规则两部分组成&#xff0c;用户可以使用数据桥接或 MQTT 主题来接入数据&#xff0c;使用规则处理数据后&#xff0c;再通过数据桥接将数据发…

重构门店网络:从“打补丁“到“造地基“的跨越

您是否遇到过这样的窘境&#xff1f; 新店开张要等一周&#xff0c;就为装根网线&#xff1b; 偏远地区门店三天两头断网&#xff0c;顾客排长队却结不了账&#xff1b; 总部想看实时数据&#xff0c;结果收到一堆乱码报错&#xff1b; 总部ERP系统升级&#xff0c;2000家门…

PH热榜 | 2025-05-13

1. FirstQuadrant 标语&#xff1a;通过以人为本的人工智能来最大化B2B销售 介绍&#xff1a;销售人工智能&#xff0c;帮助创始人和收益团队提高效率&#xff0c;保持组织有序&#xff0c;并促成更多交易。它通过简化销售幕后工作&#xff0c;确保每个细节都不会遗漏。 产品…

【即插即用涨点模块】【上采样】CARAFE内容感知特征重组:语义信息与高效计算两不误【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

esp32硬件支持AT指令

步骤1&#xff1a;下载AT固件 从乐鑫官网或Git鑫GitHub仓库&#xff08;https://github.com/espressif/esp-at&#xff09;获取对应ESP32型号的AT固件&#xff08;如ESP32-AT.bin&#xff09;。 步骤2&#xff1a;安装烧录工具 使用 esptool.py&#xff08;命令行工具&#…

【神经网络与深度学习】局部最小值和全局最小值

引言 在机器学习和优化问题中&#xff0c;目标函数的优化通常是核心任务。优化过程可能会产生局部最小值或全局最小值&#xff0c;而如何区分它们并选择合适的优化策略&#xff0c;将直接影响模型的性能和稳定性。 在深度学习等复杂优化问题中&#xff0c;寻找全局最小值往往…

链表的面试题4之合并有序链表

这篇文章我们继续来讲链表中很经典的面试题&#xff1a;合并有序链表。 目录 迭代 递归 我们首先来看一下这张图片里面的要求&#xff0c;给你两个链表&#xff0c;要求把他们按照从小到大的方式排列。 这里涉及到几个问题&#xff0c;首先&#xff0c;我们的头节点是不是要…

flea-cache使用之Redis哨兵模式接入

Redis哨兵模式接入 1. 参考2. 依赖3. 基础接入3.1 定义Flea缓存接口3.2 定义抽象Flea缓存类3.3 定义Redis客户端接口类3.4 定义Redis客户端命令行3.5 定义哨兵模式Redis客户端实现类3.6 定义Redis哨兵连接池3.7 定义Redis哨兵配置文件3.8 定义Redis Flea缓存类3.9 定义抽象Flea…

OpenAI for Countries:全球AI基础设施的“技术基建革命”

2025年5月7日&#xff0c;OpenAI宣布启动“OpenAI for Countries”计划&#xff0c;目标是为全球各国构建本土化的AI基础设施&#xff0c;提供定制化服务。这一计划被视为其“星际之门”项目的全球化延伸&#xff0c;以技术合作为核心&#xff0c;覆盖数据中心建设、模型适配与…

Linux精确列出非法 UTF-8 字符的路径或文件名

Docker构建的时候报错:failed to solve: Internal: rpc error: code = Internal desc = grpc: error while marshaling: string field contains invalid UTF-8 1、创建一个test.sh文件 find . -print0 | while IFS= read -r -d file;

FFmpeg在Android开发中的核心价值是什么?

FFmpeg 在 Android 开发中的核心价值主要体现在其强大的多媒体处理能力和灵活性上&#xff0c;尤其在音视频编解码、流媒体处理及跨平台兼容性方面具有不可替代的作用。以下是具体分析&#xff1a; --- 1. 强大的音视频编解码能力 - 支持广泛格式&#xff1a;FFmpeg 支持几乎所…

自我奖励语言模型:突破人类反馈瓶颈

核心思想 自我奖励语言模型提出了一种全新的语言模型对齐范式。传统方法如RLHF或DPO依赖人类反馈数据训练固定的奖励模型&#xff0c;这使模型的能力受限于人类标注数据的质量和数量。论文作者认为&#xff0c;要实现超人类能力的AI代理&#xff0c;未来的模型需要突破人类反馈…

5. 动画/过渡模块 - 交互式仪表盘

5. 动画/过渡模块 - 交互式仪表盘 案例&#xff1a;数据分析仪表盘 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">.dashboard {font-family: Arial…

【前端三剑客】Ajax技术实现前端开发

目录 一、原生AJAX 1.1AJAX 简介 1.2XML 简介 1.3AJAX 的特点 1.3.1AJAX 的优点 1.3.2AJAX 的缺点 1.4AJAX 的使用 1.4.1核心对象 1.4.2使用步骤 1.4.3解决IE 缓存问题 1.4.4AJAX 请求状态 二、jQuery 中的AJAX 2.1 get 请求 2.2 post 请求 三、跨域 3.1同源策略…