回复 21楼 九转星河
你这个回答不对,if(a[j]>a[j+1])不是判断了多少次,而是执行了多少次,按照你的意思,如果if(a[j]<a[j+1])就不属于判断了吗?还有如果原始数据本来就是{1,2,3,4,5,6,7,8,9,10};就不用判断了吗?所以判断次数应该是
for(i=0;i<len-1;i++) 乘以for(j=0;j<len-i-1;j++)。乘出来的结果是多少,好象是90次。
2018-05-23 11:08
2018-05-23 11:21
2018-05-23 11:38
程序代码:#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;
}
2018-05-23 16:08
2018-05-23 17:34
2018-05-23 21:07
2018-05-25 17:12