冒泡排序的C++实现详解
需积分: 5 60 浏览量
更新于2024-12-26
收藏 881B ZIP 举报
资源摘要信息:"cpp代码-冒泡排序"
冒泡排序是计算机科学中最简单的排序算法之一,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法虽然简单,但效率不高,因为它需要对每个元素都进行比较,并且在最好的情况下(数组已经有序)也需要进行n-1次比较,其中n为数组长度。尽管如此,冒泡排序算法因其易于理解和实现,在教学中常被用作排序算法的入门。
以下是冒泡排序算法的C++实现:
```cpp
#include <iostream>
using namespace std;
// 函数声明
void bubbleSort(int arr[], int n);
void swap(int &a, int &b);
void printArray(int arr[], int size);
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "未排序的数组: ";
printArray(arr, n);
bubbleSort(arr, n);
cout << "排序后的数组: ";
printArray(arr, n);
return 0;
}
// 冒泡排序函数
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])
swap(arr[j], arr[j+1]);
}
// 交换两个数的函数
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
// 打印数组的函数
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
cout << endl;
}
```
在上述代码中,`bubbleSort` 函数通过双层循环实现排序,外层循环控制排序的轮数,内层循环负责进行相邻元素的比较和交换。`swap` 函数用于交换两个变量的值。`printArray` 函数用于输出数组的当前状态。
冒泡排序算法的复杂度分析:
- 最坏情况时间复杂度:O(n^2),当输入数组的逆序度越高,需要的比较和交换次数越多。
- 最好情况时间复杂度:O(n),当输入数组已经是正序时,只需进行一轮比较,不需要交换。
- 平均情况时间复杂度:O(n^2),因为每一轮排序都可能将一个元素排到正确的位置。
- 空间复杂度:O(1),因为排序是原地进行,不需要额外的存储空间。
除了基本的冒泡排序外,还有各种改进的版本,如设置标志位减少不必要的比较、鸡尾酒排序(双向冒泡排序)等,以提高效率。
冒泡排序尽管不适用于大量数据的排序任务,但在处理小数据集或对排序性能要求不高的场合中,它的代码简洁易懂,仍然有着一定的应用价值。
2021-07-14 上传
2021-07-16 上传
2021-07-16 上传
2021-07-14 上传
2021-07-16 上传
2024-12-27 上传
2024-12-27 上传
2024-12-27 上传
2024-12-27 上传
weixin_38596267
- 粉丝: 9
- 资源: 901
最新资源
- Pro C# 2008 and the NET 3.5 Platform Fourth Edition.pdf
- c# 自定义用户控件
- Addison.Wesley.Advanced.ASP.NET.AJAX.Server.Controls.For.dot.NET.Framework.3.5.Jul.2008.pdf
- C++ string 深入详解(2.0)
- Apress.Pro.LINQ.Language.Integrated.Query.in.CSharp.2008
- Ajax中使用JSON.doc
- 无线网络技术与应用—课程学习笔记
- 自主性学习CAI多媒体教学软件设计
- 二级VB试题及答案 全国计算机二级VB试题及答案
- 交通运输参考文献 建模必备
- CortexA9处理器
- 城市垃圾运输 完成版
- 网上商城系统的完整论文
- ObjectARX开发实例教程-20070715.pdf
- badboy中文手册
- 组合导航中视觉系统动态定位方法研究