本帖最后由 陆鹏 于 2012-7-15 22:22 编辑
首先楼主这种球最大值的方式不是最佳方式,好的方式视频有讲,望楼主认真学习。
这里就题论题了,就分析你错误的情况
int[]a={11,3,25,10,35,100,400};
int temp=a[0];
for(int i=0;i<a.length-1;i++)
{
if(a>a[i+1])
{
temp=a;
a=a[i+1];
a[i+1]=temp;
}
}
第一轮:11,3,25,10,35,100,400
此时temp =11,if(true)------>交换后------>temp=11;
第二轮:3,11,25,10,35,100,400
此时temp = 11,if(false)------->什么都不做------>temp=11;
第三轮:3,11,25,10,35,100,400
此时 temp = 11,if(true)--------->交换------->temp=25;
第四轮:3,11,10,25,35,100,400
此时 temp =25,if(false)---------->什么都不做-----> temp = 25;
此后的数都是前小后大,也就是什么都不做,temp一直保持25不变;
希望楼主以后分析这种循环问题能在草稿纸上如此推算,自己学会分析问题。
浅显之见希望楼主明白。
|