C++数据结构输出双向冒泡排序每一趟结果
时间: 2023-07-08 07:49:57 浏览: 121
好的,我可以为您解答关于C++数据结构输出双向冒泡排序每一趟结果的问题。以下是一段C++代码实现双向冒泡排序,并输出每一趟的结果:
```c++
#include <iostream>
using namespace std;
void cocktailSort(int arr[], int n) {
bool swapped = true;
int start = 0;
int end = n - 1;
while (swapped) {
swapped = false;
for (int i = start; i < end; ++i) {
if (arr[i] > arr[i + 1]) {
swap(arr[i], arr[i + 1]);
swapped = true;
}
}
if (!swapped) break;
swapped = false;
--end;
for (int i = end - 1; i >= start; --i) {
if (arr[i] > arr[i + 1]) {
swap(arr[i], arr[i + 1]);
swapped = true;
}
}
++start;
cout << "第" << start << "趟结果: ";
for(int i = 0; i < n; ++i) {
cout << arr[i] << " ";
}
cout << endl;
}
}
int main() {
int arr[] = { 3, 8, 5, 2, 9, 4, 1, 7, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
cocktailSort(arr, n);
return 0;
}
```
在上面的代码中,我们定义了一个名为cocktailSort的函数,该函数接受一个整数数组和数组的长度作为参数。使用布尔变量swapped来记录是否发生了交换。我们还定义了一个起始位置start和结束位置end,它们用于记录排序的范围。
然后,我们使用while循环来执行排序。在while循环中,我们首先从左到右遍历数组,如果相邻的两个元素需要交换,则进行交换,并将swapped设置为true。然后,我们从右到左遍历数组,如果相邻的两个元素需要交换,则进行交换,并将swapped设置为true。
在完成一次循环后,我们将end减小1,并将swapped设置为false。接下来,我们再次从左到右遍历数组,并重复之前的步骤,直到数组完全排序。
同时,我们在每一趟排序结束后,输出当前排序结果。在上面的代码中,我们使用cout语句输出排序的趟数和当前排序结果。
希望我的回答能够帮到您!
阅读全文