您的位置:首页 > 教育 > 锐评 > 天津重型网站建设推荐_网页怎么制作成二维码_市场营销最有效的手段_希爱力双效片副作用

天津重型网站建设推荐_网页怎么制作成二维码_市场营销最有效的手段_希爱力双效片副作用

2025/2/25 6:03:48 来源:https://blog.csdn.net/2303_79480422/article/details/145740580  浏览:    关键词:天津重型网站建设推荐_网页怎么制作成二维码_市场营销最有效的手段_希爱力双效片副作用
天津重型网站建设推荐_网页怎么制作成二维码_市场营销最有效的手段_希爱力双效片副作用

冒泡排序标准代码(C语言)

c复制代码

#include <stdio.h>// 冒泡排序函数
void bubbleSort(int arr[], int n) {// 外层循环:控制排序轮数for (int i = 0; i < n - 1; i++) {// 内层循环:控制每轮比较次数for (int j = 0; j < n - 1 - i; j++) {// 比较相邻元素if (arr[j] > arr[j + 1]) {// 交换元素int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr) / sizeof(arr);bubbleSort(arr, n);printf("排序结果:");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;
}

核心逻辑分步解析

1. 外层循环 for (i = 0; i < n-1; i++)
  • 作用:控制排序轮数
  • 循环次数n-1 次(例如7个元素需要6轮)
  • 原理:每轮确定一个最大值的位置
2. 内层循环 for (j = 0; j < n-1-i; j++)
  • 作用:执行相邻元素比较
  • 比较次数:每轮减少i次(已排序部分无需再比较)
  • 示例(初始数组 [5,3,8,6]):
    轮次比较范围具体操作
    i=0j从0到3比较全部4对元素
    i=1j从0到2比较前3对元素
    i=2j从0到1比较前2对元素
3. 元素交换逻辑

c复制代码

if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;
}
  • 可视化过程(以 [5,3,8,6] 为例):

    复制代码

    初始 → [5,3,8,6]
    第1轮 → [3,5,6,8](8归位)
    第2轮 → [3,5,6,8](6已正确)
    第3轮 → [3,5,6,8](无交换,排序完成)

时间复杂度分析

情况时间复杂度说明
最坏情况O(n²)完全逆序(如 9,8,7,6
平均情况O(n²)一般随机数据
最好情况O(n)已排序(通过优化可实现)

优化版冒泡排序

增加标志位检测是否已提前有序:

c复制代码

void optimizedBubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int swapped = 0; // 标志位for (int j = 0; j < n-1-i; j++) {if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;swapped = 1;}}if (!swapped) break; // 本轮无交换说明已有序}
}

与其他排序算法对比

算法平均时间复杂度空间复杂度稳定性适用场景
冒泡排序O(n²)O(1)稳定小数据量或教学用途
快速排序O(n log n)O(log n)不稳定大规模数据
插入排序O(n²)O(1)稳定基本有序的数据
选择排序O(n²)O(1)不稳定小数据量

重点总结

  1. 核心思想:通过相邻元素比较和交换,使较大值逐渐"浮"到数组右侧。
  2. 代码要点
    • 双循环嵌套结构
    • 内层循环范围随轮次缩小(n-1-i
    • 可添加标志位优化提前退出
  3. 学习建议
    • 用纸笔模拟排序过程(如输入 [7,3,5,1,9]
    • 对比不同数据量下的性能差异
    • 尝试修改为降序排序

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com