编写程序实现双向冒泡排序c++代码
时间: 2023-07-24 13:37:24 浏览: 117
下面是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;
}
}
int main()
{
int arr[] = { 5, 1, 4, 2, 8, 0, 2 };
int n = sizeof(arr) / sizeof(arr[0]);
cocktailSort(arr, n);
cout << "Sorted array: \n";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}
```
这里使用了一个`bool`型变量`swapped`来判断数组是否已经排好序。在每一轮双向冒泡排序中,首先从左向右遍历数组,将最大的元素移到最后,然后从右向左遍历数组,将最小的元素移到前面。如果在这一轮中没有进行元素交换,说明数组已经排好序,可以退出循环。
阅读全文