C语言实现冒泡排序算法详解
130 浏览量
更新于2024-08-03
收藏 2KB MD 举报
"冒泡法排序是计算机科学中一种基础的排序算法,其主要思想是通过重复遍历待排序的数列,依次比较相邻元素并根据需要进行交换,以使较大的元素逐渐‘浮’到数列的末尾。本文将详细讨论如何用C语言实现冒泡排序算法,并提供一个具体的示例程序。
在C语言中,实现冒泡排序的关键在于编写正确的比较和交换元素的逻辑。以下是一个简单的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 - i - 1; j++) { // 每轮比较n-i-1次
if (arr[j] > arr[j + 1]) { // 如果当前元素大于下一个元素
// 交换两个元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 打印数组函数
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("原始数组:");
printArray(arr, n); // 打印原始数组
bubbleSort(arr, n); // 调用冒泡排序函数
printf("排序后的数组:");
printArray(arr, n); // 打印排序后的数组
return 0;
}
```
在这个程序中,`bubbleSort`函数执行冒泡排序的核心逻辑,它通过两层嵌套循环实现。外层循环控制总的遍历次数,内层循环则负责在每一轮中比较并交换相邻元素。当遇到逆序对(即当前元素大于下一个元素)时,就进行交换。`printArray`函数用于辅助显示数组内容,方便观察排序前后的变化。
在`main`函数中,首先初始化了一个待排序的数组,然后调用`bubbleSort`进行排序,最后分别打印排序前后的数组。程序的输出结果如下:
```
原始数组:64342512221190
排序后的数组:11122225346490
```
这个程序清晰地展示了冒泡排序的工作原理。虽然冒泡排序的时间复杂度在最坏情况下为O(n^2),但它对于小规模数据或部分有序的数据具有一定的效率。在实际应用中,由于其简单性和易理解性,冒泡排序常被用于教学和算法理解。然而,在处理大规模数据或追求性能的情况下,更高效的排序算法如快速排序、归并排序等会是更好的选择。"
2287 浏览量
347 浏览量
点击了解资源详情
1180 浏览量
2008-05-07 上传
2063 浏览量
104 浏览量
点击了解资源详情
Java毕设王
- 粉丝: 9149
- 资源: 1102
最新资源
- Leaflet.Vehicletrackplayback.rar
- WebAccess实战应用二 :OCX 控件在WebAccess 中的应用.rar
- Django-taskmanager-app:一个使用Django构建的简单待办事项应用
- Java_Web项目-招聘网站
- DangerousNanthy:旧版经典DOS游戏《 Dangerous Dave 1995》的重制版
- 施工管理资料表格-F0501_制冷设备运行调试记录
- 纯jQuery代码实现时钟效果
- jd_review_num_sina_h1
- hapi-auth-bearer-token:用于hapi的简单Bearer身份验证方案插件,通过Header,Cookie或Query参数接受令牌
- Mock-Test
- 迅鹏 SPR90 4路压力记录仪.zip
- phaser-typescript-webpack:另一个使用TypeScript和Webpack的Phaser CE样板
- 电动汽车_NEDC工况下的换挡点计算.zip
- Lekcja9:09.03.2021
- index-p-vuejs
- ActionView问题需求跟踪工具 v1.12.0(支持二次开发).zip