#include <iostream>
using namespace std;
template<class T>
void cocktail_sort(T *arr, int len)
{
T tmp;
int tail = len - 1;
for(int i = 0; i < tail; )
{
//小的排到前面
for(int j = tail; j > i; -- j)
{
if(arr[j] < arr[j - 1])
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
++ i;
//大的排到后面
for(int j = i; j < tail; ++ j)
{
if(arr[j] > arr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
tail --;
}
}
int main()
{
int size;
cin >> size;
int *arr = new int[size];
for(int i = 0; i < size; ++ i)
cin >> *(arr+i);
cocktail_sort(arr, size);
for(int i = 0; i < size; ++ i)
cout << *(arr + i) << " ";
cout << endl;
}
常用排序算法——鸡尾酒排序(改进的冒泡排序)
最新推荐文章于 2025-07-22 00:50:53 发布
本文介绍了一种双向冒泡排序算法——鸡尾酒排序,并提供了完整的C++代码实现。该算法通过交替从前向后及从后向前遍历待排序数组的方式,每次将最大和最小的元素放到正确的位置上。
415

被折叠的 条评论
为什么被折叠?



