回复 20楼 自学的数学
看执行了多少次 if(a[j]>a[j+1])
~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
程序代码:#include <stdio.h>
void sort(int *a,int len)
{
int i,j,t,z,count=0;
for(i=0;i<len-1;i++)
{
int mask=1;
for(j=0;j<len-i-1;j++)
{
if(a[j]>a[j+1])
{
mask=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
printf(" 第 %3d 次交换: ",++count);
for(z=0;z<10;z++)
printf("%4d ",a[z]);
printf("\n");
}
}
if(mask)
break;
}
printf("共交换%4d 次",count);
printf("\n");
}
int main(int argc, char *argv[])
{
int a[10]={10,9,8,7,6,5,4,3,2,1};
int i=0;
//sort(a,10);
printf("这段代码是用冒泡排序法来统计共交换了多少次。\n ");
printf("交换前的数据: ");
for(i=0;i<10;i++)
printf(" %4d",a[i]);
printf("\n");
sort(a,10);
printf(" 交换后的数据: ");
for(i=0;i<10;i++)
printf("%4d ",a[i]);
return 0;
}