#include <stdio.h>
//鸡尾酒排序法思路: 冒泡排序法的升级版,通过两边交替比较换位,快速进行排序
int main(void)
{
int a[10]={1,3,44,66,7,8,0,4,2,13} ;
int i=0,temp=0,j=0;
int leftedge=0;
int rightedge=10;//左右边界
int leftchange=0;
int rightchange=0;//左右两边最后一次交换位置的下标
while(leftedge < rightedge)
{
for(i=leftedge ; i < rightedge ; i++)//从左边界开始寻找
{
if(a[i] > a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
rightchange = i;
for(j=0;j<10;j++)
{
printf("%d ",a[j]);
}
printf("\n") ;
}
}
rightedge = rightchange;//将向右比较最后一次交换下标赋给右边界
for(i = rightedge ; i >= leftedge ; i--)//右边界开始轮询
{
if(a[i-1] > a[i])
{
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
leftchange = i;
for(j=0;j<10;j++)
{
printf("%d ",a[j]);
}
printf("\n") ;
}
}
leftedge = leftchange;//将向左比较最后一次交换下标赋给左边界
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}