冒泡的问题
冒泡法就是两个for循环,请问
for(i=0;i<n;i++)
for(j=0;j<n;j++)和
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
}一样吗
[解决办法]
头晕了。还是错了,第2个循环的起点和终点还是忘改了。最后应该是
- C/C++ code
for(i=0;i <n;i++) //遍历,每次确定一个数的位置 { for(j=1;j <n-i;j++) //从第2个开始到最后一个未确定位置的数, { //分别与前一个数比较并将位置互换,可以使升序也可以是降序 } }}
[解决办法]
[解决办法]
[解决办法]
注意理解语法,for语句是个语句(statement),它的语法是这样的:for(...) statement
那什么是statemet呢?
expression;表达式加;是个简单语句(simple statement)
{}是复合语句/块语句(compound/block statement)
for/if/while语句是个语句(statement)(注意,这里是递归定义)
这样看来,下面所有的东西都是合法的语句:
- C/C++ code
for(...) expression;for(...){}for(...) for(...) expression;for(...){ for(...) expression; expression;}
[解决办法]
例如:使用冒泡(起泡)法对10个整数(随机生成的数组元素)从大到小排序,并输出排序前后数组中元素的值。
#include<iostream>
#include<ctime>
#include<iomanip>
using namespace std;
int main(){
int a[10];
int i,j;
cout<<"排序前:";
srand((unsigned int)time(NULL));
for(i=0;i<10;i++){
a[i]=rand()%100;
cout<<setw(4)<<a[i];
}
cout<<endl;
for(i=0;i<=8;i++) //表示比较几轮
for(j=0;j<10-i-1;j++){
if(a[j]>a[j+1]){
int temp;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
cout<<"排序后:";
for(i=0;i<10;i++)
cout<<setw(4)<<a[i];
cout<<endl;
return 0;
}
[解决办法]
都一样,将来可能按需要在嵌套全换内加东西,所以加个括号
比如说:
for(i=0;i<n-1;i++)
{
cout<<"LZ辛苦了"<<endl;
for(j=i+1;j<n;j++)
}
这种情况,你若不加括号,
是不是就只执行cout<<"LZ辛苦了"<<endl;了,当然这个会输出n-1个LZ辛苦了
呵呵,只是比喻比喻啦。
我要说的就是:
1.是第二成循环多个语句为一体执行。
2.有时只是代码风格啦.好看点呗
[解决办法]