c++冒泡排序迭代和递归
时间: 2024-09-19 09:18:19 浏览: 53
C++中的冒泡排序算法有两种常见实现方式:迭代和递归。
1. **迭代实现**:
冒泡排序的基本思想是反复交换相邻的两个元素,使得较大的数逐渐“浮”到数组的顶部。以下是使用循环迭代的版本:
```cpp
void bubbleSortIterative(int arr[], int n) {
for (int i = 0; i < n - 1; i++) { // 遍历n-1次,因为最后一次会自动完成排序
for (int j = 0; j < n - 1 - i; j++) { // 每轮内部遍历次数减少
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]); // 交换元素
}
}
}
}
```
2. **递归实现**:
虽然理论上可以使用递归来编写冒泡排序,但由于每次比较都会导致数据交换,这并不适合递归。不过,可以设计一个不太实用的、仅用于教学目的的递归版本,它通常不会被实际应用:
```cpp
// 这里的递归版本效率极低,不推荐
void bubbleSortRecursive(int arr[], int n) {
if (n == 1 || arr[n - 1] <= arr[n - 2]) return;
bubbleSortRecursive(arr, n - 1);
if (arr[n - 1] < arr[0]) swap(arr[0], arr[n - 1]);
}
```
阅读全文