flag使你的排序速度更高,如果删掉结果依然正确,但是会执行很多次无效的循环,降低程序的效率。你把程序改成这样,你再试试删和不删的区别。也可以输0-9和9-0单步调一下。
#include
int bubblesort(int arr[],int size)
{
int i,temp,flag;
int loop=0; //循环次数
for(i=1;i
loop++;
for(int j=0;j
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
loop++; //loop+1
}
if(!flag) break;
}
return loop;
}
void main(void)
{
int a[10], i;
int b=0; //////////////
cout<<"please input 10 integers:\n";
for(i=0;i<10;i++)
cin>>a[i];
b = bubblesort(a,10);
for(i=0;i<10;i++)
cout< cout<<"循环次数为:"<}
flag使你的排序速度更高,如果删掉结果依然正确,但是会执行很多次无效的循环,降低程序的效率。你把程序改成这样,你再试试删和不删的区别。也可以输0-9和9-0单步调一下。
#include
int
bubblesort(int
arr[],int
size)
{
int
i,temp,flag;
int
loop=0;
//循环次数
for(i=1;i
flag=0;
loop++;
for(int
j=0;j
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
loop++;
//loop+1
}
if(!flag)
break;
}
return
loop;
}
void
main(void)
{
int
a[10],
i;
int
b=0;
//////////////
cout<<"please
input
10
integers:\n";
for(i=0;i<10;i++)
cin>>a[i];
b
=
bubblesort(a,10);
for(i=0;i<10;i++)
cout<";
cout<<"循环次数为:"<}
for-j循环是把数组某一部分扫描一次,每遇大数在前就交换,使得这一部分最后一个数是这部分的最大值.
for-i循环是不断缩小这一范围,使数组由后向前依次为最大值,次最大值,第三最大值...最小值.
for-j循环中,如果没有遇到大数在小数前,也就是有小到大顺序排列,没有继续循环的必要,就会置flag为1,for-j执行完后即跳出for-i循环,子函数结束.
flag在这里主要是起提高效率的作用,并不影响结果.
好的程序员看重的不仅仅是结果,还要看效率!
多用几组数据测试你的程序!你就会发现其中的密秘!
建议你用一千个数或更多和数据来测试。
可以将这些数据存入文件,也可以随机生成。