双向冒泡排序算法数据结构c++代码
时间: 2024-06-05 07:05:16 浏览: 269
双向冒泡排序算法,也叫鸡尾酒排序算法,是对冒泡排序算法的改进。它的原理是在每一轮排序中,除了从左往右进行一次冒泡排序外,还可以从右往左进行一次冒泡排序,以此来减少排序的时间。以下是双向冒泡排序的C++代码实现:
```
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;
// 从右往左进行冒泡排序
for (int i = end-1; i >= start; --i)
{
if (arr[i] > arr[i+1])
{
swap(arr[i], arr[i+1]);
swapped = true;
}
}
++start;
}
}
```
阅读全文