当前位置: 首页 > news >正文

排序算法--冒泡排序

 冒泡排序虽然简单,但在实际应用中效率较低,适合小规模数据或教学演示。

// 冒泡排序函数
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;}}}
}
#include <stdio.h>
void printArray(int arr[], int n) {for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");
}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90}; // 待排序数组int n = sizeof(arr) / sizeof(arr[0]); // 计算数组长度printf("排序前的数组: \n");printArray(arr, n);bubbleSort(arr, n); // 调用冒泡排序函数printf("排序后的数组: \n");printArray(arr, n);return 0;
}

优化建议

1)提前终止:如果某一轮没有发生交换,说明数组已有序,可以提前结束排序。

// 冒泡排序函数
void bubbleSortOptimized(int arr[], int n) {int swapped;for (int i = 0; i < n - 1; i++) {// 外层循环控制排序轮数swapped = 0;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;swapped = 1;}}if (!swapped) break; // 如果没有交换,提前结束}
}

 2)记录最后交换位置:记录每轮最后一次交换的位置,减少不必要的比较。

http://www.lryc.cn/news/531996.html

相关文章:

  • 简易C语言矩阵运算库
  • 通过C/C++编程语言实现“数据结构”课程中的链表
  • 【分布式架构理论3】分布式调用(2):API 网关分析
  • 基于Kamailio、MySQL、Redis、Gin、Vue.js的微服务架构
  • 6S模型的编译问题解决
  • C++11详解(二) -- 引用折叠和完美转发
  • 实验十四 EL和JSTL
  • 为什么在springboot中使用autowired的时候它黄色警告说不建议使用字段注入
  • DeepSeek大模型介绍、本地化部署与使用!【AI大模型】
  • 备考蓝桥杯嵌入式4:使用LCD显示我们捕捉的PWM波
  • 智能化转型2.0:从“工具应用”到“价值重构”
  • 机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战
  • 9.PPT:儿童孤独症介绍【22】
  • 离散浣熊优化算法(DCOA)求解大规模旅行商问题(Large-Scale Traveling Salesman Problem,LTSP),MATLAB代码
  • Java 引入和使用jcharset,支持UTF-7字符集
  • rust安装笔记
  • 扣子平台的选择器节点:让智能体开发更简单,扣子免费系列教程(17)
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_sprintf_num 函数
  • Vue的状态管理:用响应式 API 做简单状态管理、状态管理库(Pinia )
  • AI工具如何辅助写文章(科研版)
  • LEED绿色建筑认证的重要意义
  • 阿里云 ubuntu22.04 中国区节点安装 Docker
  • 【kafka的零拷贝原理】
  • Linux环境部署DeepSeek大模型
  • React中key值的正确使用指南:为什么需要它以及如何选择
  • 21.2.1 基本操作
  • 车载以太网__传输层
  • 简单本地部署deepseek(软件版)
  • AI绘画:解锁商业设计新宇宙(6/10)
  • 20250202在Ubuntu22.04下使用Guvcview录像的时候降噪