news 2026/3/25 2:32:47

冒泡排序与选择排序:零基础入门两种经典排序算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
冒泡排序与选择排序:零基础入门两种经典排序算法

排序算法是编程入门的必修课,而冒泡排序和选择排序作为两种基础的交换类排序算法,原理简单易懂,非常适合C语言初学者学习和实践。本文将带你拆解这两种算法的核心逻辑,对比它们的异同,并附上可直接运行的代码示例。

一、冒泡排序:像气泡一样“上浮”的排序

核心思想

冒泡排序的核心是相邻元素两两比较,逆序则交换。每一轮排序都会将当前未排序部分的最大元素,像气泡一样逐步“上浮”到末尾,重复这个过程直到整个数组有序。

为了优化算法效率,我们还可以加入一个“交换标记”:如果某一轮排序中没有发生任何交换,说明数组已经有序,可以直接退出循环,避免无效遍历。

C语言实现代码

算法特点

交换次数:每轮可能多次交换,数据量较大时效率偏低。

稳定性:稳定排序(相等元素的相对位置不会改变)。

二、选择排序:每轮只选一个“最小值”

核心思想

选择排序的核心是先选后换。每一轮排序时,先遍历未排序部分,找到最小元素的下标,然后将其与未排序部分的第一个元素交换位置。每轮仅需一次交换,相比冒泡排序减少了交换操作的次数。

C语言实现代码

算法特点

交换次数:每轮仅1次交换,交换操作少于冒泡排序。

稳定性:不稳定排序(相等元素的相对位置可能改变)。

三、冒泡排序 vs 选择排序:核心区别对比

特性 冒泡排序 选择排序

核心操作 相邻元素多次比较交换 找最小值一次比较交换

交换次数 多(取决于数据有序度) 少(固定 次)

稳定性 稳定 不稳定

最好时间复杂度 (优化后)

适用场景 数据基本有序的小规模场景 对交换操作敏感的小规模场景

四、初学者学习建议

1. 手动模拟排序过程:拿一个无序数组,一步步写出冒泡和选择排序的每轮变化,理解元素移动的逻辑。

2. 对比代码差异:重点看两层循环的作用,以及交换操作的时机,这是区分两种算法的关键。

3. 尝试改造代码:比如实现降序排序,或者给排序函数增加打印语句,观察每轮排序的中间结果。

总结

冒泡排序和选择排序都是基于“交换”的简单排序算法,适合小规模数据排序。冒泡排序胜在稳定且可优化,选择排序胜在交换次数少。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 5:57:44

Kotaemon日志分析助手:ELK栈联动排查系统问题

Kotaemon日志分析助手:ELK栈联动排查系统问题 在现代企业级应用的运维现场,一个常见的场景是:监控系统突然报警,订单服务响应延迟飙升。值班工程师迅速打开Kibana,面对成千上万条滚动的日志记录,开始手动筛…

作者头像 李华
网站建设 2026/3/23 22:11:16

1小时开发:无线网卡诊断工具原型制作

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个无线网卡诊断MVP工具,核心功能:1. 基础错误检测;2. 驱动状态检查;3. 一键修复按钮。要求:使用快马平台快速开发&…

作者头像 李华
网站建设 2026/3/18 9:16:02

电商大促前必做:用Percona Toolkit做好MySQL压测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商数据库压力测试套件,集成pt-stress进行定制化负载测试,使用pt-upgrade比较不同MySQL版本的性能差异。要求包含TPS/QPS监控图表,能够…

作者头像 李华
网站建设 2026/3/23 7:11:57

16、网络安全防护与检测:从恶意软件查杀到审计策略

网络安全防护与检测:从恶意软件查杀到审计策略 1. Linux 系统恶意软件防护 1.1 Linux 系统恶意软件现状 虽然有观点认为 Linux 系统不易感染恶意软件,但随着 Linux 用户群体的扩大,其并非完全无懈可击,可能已有针对它的恶意软件出现。为保障系统安全,我们要留意已知的攻…

作者头像 李华
网站建设 2026/3/18 20:28:52

AI教你玩转Vue3 Computed:智能生成响应式计算逻辑

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个Vue3组件代码,包含以下computed属性:1) 根据用户输入的单价和数量自动计算总价 2) 根据购物车商品列表自动计算选中商品的总价和总数量 3) 根据用…

作者头像 李华
网站建设 2026/3/24 4:47:15

AI如何帮你快速理解Vue2生命周期?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Vue2生命周期演示项目,要求:1.包含所有生命周期钩子函数(beforeCreate、created、beforeMount等);2.每个钩子函数…

作者头像 李华