鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种改进。此算法与冒泡排序的不同之处在于从低到高排然后从高到低,而冒泡排序则仅从低到高去比较序列中的每个元素,可以得到比冒泡排序稍微好一点的效能。
最差时间复杂度O(n^2)
最优时间复杂度-如果序列在一开始已经大部分排列过的话,会接近o(n)
平均复杂度-o(n^2)
稳定排序
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=10;
int n,s[maxn];
void Cocktailsort()
{
int left=0;
int right=n-1;
while(left<right){
//前半轮,将最大元素放到后面
for(int i=left;i<right;i++){
if(s[i]>s[i+1]){
swap(s[i],s[i+1]);
}
}
right--;
//后半轮,将最小元素放到前面
for(int i=right;i>left;i--){
if(s[i]<s[i-1]){
swap(s[i],s[i-1]);
}
}
left++;
}
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&s[i]);
}
Cocktailsort();
for(int i=0;i<n;i++){
printf("%d ",s[i]);
}
cout<<endl;
return 0;
}