鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
#include<cstdio>
void cocktail_sort(int A[],int n)
{
int i,j,temp;
bool flag;
for(i=1;i<=n/2;i++)
{
flag=true;
for(j=i;j<=n-i;j++)
{
if(A[j+1]<A[j])
{
temp=A[j+1];
A[j+1]=A[j];
A[j]=temp;
flag=false;
}
}
if(flag)
return ;
flag=true;
for(j=n-i;j>i;j--)
{
if(A[j-1]>A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
flag=false;
}
}
if(flag)
return ;
}
}
int main()
{
int A[100],i;
while(scanf("%d",&A[0])!=EOF)
{
for(i=1;i<=A[0];i++)
scanf("%d",&A[i]);
cocktail_sort(A,A[0]);
for(i=1;i<=A[0];i++)
printf("%d ",A[i]);
printf("\n");
}
return 0;
}