c语言排序法
1.冒泡法
基本思想
冒泡排序就像水中的气泡一样,较大的元素会慢慢”浮”到数组的顶端(右侧),而较小的元素会”沉”到底部(左侧)。
算法步骤
核心原理
- 比较相邻的两个元素
- 如果顺序错误(前一个比后一个大),就交换它们
- 每一轮都会将当前最大的元素”冒泡”到它应该在的位置
代码实现
1 | |
1.循环条件为什么是 n-i-1?
1 | |
- 因为每完成一轮,最大的元素就已经在正确位置
- 下一轮就不需要再比较已经排好的元素
- 所以比较次数逐轮减少
原理图解
以数组 [5, 3, 8, 4, 2] 为例:
第0轮排序 (i=0):
1 | |
第1轮排序 (i=1):
1 | |
第2轮排序 (i=2):
1 | |
第3轮排序 (i=3):
1 | |
总结
冒泡排序的优点:
- 简单易懂,代码实现容易
- 空间复杂度低
- 稳定排序(相等元素的相对位置不变)
缺点:
- 效率较低,不适合大量数据
2.选择法
基本思路
选择排序的核心思想是:每次从未排序的部分中选择最小(或最大)的元素,放到已排序部分的末尾。
算法步骤
- 在未排序序列中找到最小元素
- 将其存放到排序序列的起始位置
- 从剩余未排序元素中继续寻找最小元素,放到已排序序列的末尾
- 重复直到所有元素均排序完毕
代码实现
1 | |
原理图解
以数组 [5, 3, 8, 4, 2] 为例:
第0轮排序 (i=0)
1 | |
第1轮排序 (i=1)
1 | |
第2轮排序 (i=2)
1 | |
第3轮排序 (i=3)
1 | |
最终结果
1 | |
总结
选择法排序的优点:
- 交换次数少:每轮最多一次交换
- 简单直观:算法逻辑清晰明确
- 性能稳定:无论输入数据如何,比较次数固定
缺点:
- 不稳定排序:可能改变相等元素的相对顺序
- 适应性差:无论输入如何都要完成所有比较
c语言排序法
https://linsport.github.io/2025/11/29/c语言编程基础/c语言排序法/