交换排序之双向冒泡
void BubbleSort2(int a[],int n) //相邻两趟向相反方向起泡的冒泡排序算法
if(a[i]>a[i+1]) {a[i]<-->a[i+1];change=1;} //有交换,修改标志change
high--; //修改上界
for(i=high;i>low;i--) //从下向上起泡
if(a[i]<a[i-1]) {a[i]<-->a[i-1];change=1;}
low++; //修改下界
}//while
}
void BubbleSort2(int a[],int n) //相邻两趟向相反方向起泡的冒泡排序算法
{
change=1;low=0;high=n-1; //冒泡的上下界
while(low<high && change)
{ change=0; //设不发生交换
for(i=low;i<high;i++) //从上向下起泡if(a[i]>a[i+1]) {a[i]<-->a[i+1];change=1;} //有交换,修改标志change
high--; //修改上界
for(i=high;i>low;i--) //从下向上起泡
if(a[i]<a[i-1]) {a[i]<-->a[i-1];change=1;}
low++; //修改下界
}//while
}