完成冒泡排序算法的设计(void BubbleSort()),对数组a中的n个整数类型的数据元素从小到大排序,上述功能定义在一个头文件中,并定义主函数的源文件,并验证结果;然后,分析该算法的时间复杂度。
时间: 2024-09-27 21:09:37 浏览: 21
**header file (bubble_sort.h)**
```c++
#ifndef BUBBLE_SORT_H
#define BUBBLE_SORT_H
#include <vector>
void BubbleSort(std::vector<int>& a, int n);
void printArray(const std::vector<int>& a);
#endif // BUBBLE_SORT_H
```
**source file (bubble_sort.cpp)**
```c++
#include "bubble_sort.h"
void BubbleSort(std::vector<int>& a, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
std::swap(a[j], a[j + 1]);
}
}
}
}
void printArray(const std::vector<int>& a) {
for (int num : a) {
std::cout << num << " ";
}
std::cout << "\n";
}
int main() {
std::vector<int> a = {5, 3, 8, 4, 2};
int n = a.size();
BubbleSort(a, n);
printArray(a);
return 0;
}
```
在这个例子中,我们定义了一个`BubbleSort`函数,它接受一个整数向量和它的长度。内部的两层循环实现了冒泡排序算法,每次比较相邻元素,如果逆序则交换。`printArray`函数用于打印排序后的数组以验证结果。
**时间复杂度分析:**
冒泡排序的时间复杂度为O(n^2),其中n是待排序数组的长度。这是因为它需要两层嵌套循环:外层循环遍历n次,内层循环最坏情况下也需要遍历n次,所以总次数是n * n。尽管在最好情况(已经排序好的数组)下,时间复杂度会退化为O(n),但在平均和最坏情况下都是O(n^2)。
阅读全文