递归实现冒泡排序.
思路:
//1.从数组的第一个元素开始,比较相邻两个元素的大小
//2.如果当前元素大于或小于后面的元素,则交换位置
//3.继续比较,直到数组的最后一个元素
//4.再进行多次遍历数组,直到数组完成排序
示例:
6 9 1 3 4 8
第一轮排序
6 1 9 3 4 8
6 1 3 9 4 8
6 1 3 4 9 8
6 1 3 4 8 9
第二轮排序
1 6 3 4 8 9
1 3 6 4 8 9
1 3 4 6 8 9
代码:
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
// 基本情况:当数组大小为1或0时直接返回
if (n <= 1) {
return;
}
// 一次遍历数组,将较大的元素交换到末尾
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
swap(arr[i], arr[i + 1]);
}
}
// 递归地对剩余的元素进行排序
bubbleSort(arr, n - 1);
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}