C++简单编程,刚学C++,将一组数按从小到大排序

#include <iostream>
using namespace std;

int main()
{ int n;
cout<<"你要输入多少个数"<<endl;
cin>>n;
int a[100],j,i,temp;
cout<<"请输入这N个数"<<endl;
for(j=0;j<n;j++)
cin>>a[j];
for(j=0;j<n;j++)
{
for(i=j+1;i<n;i++)
{if(a[j]>=a[i])
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
for(j=0;j<n;j++)
cout<<a[j]<<" ";
}
为何没能实现排序?忘高手指点指点
嗯,加了大括号后就对了,但是我想知道这是为什么呢?for(i=j+1;i<n;i++)
{if(a[j]>=a[i])
temp=a[j];
a[j]=a[i];
a[i]=temp; 与

for(i=j+1;i<n;i++)
{if(a[j]>=a[i])
{temp=a[j];
a[j]=a[i];
a[i]=temp;}
}

的区别

for(i=j+1;i<n;i++)
{
if(a[j]>=a[i])//加个大括号
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
若不加大括号
for(i=j+1;i<n;i++)
{
if(a[j]>=a[i])
temp=a[j];//if语句到此处执行完毕
a[j]=a[i];//此语句不受if控制
a[i]=temp;//此语句不受if控制

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-24
你那加大括号 只是语法对了

if(a[j]>=a[i]) 这句 i 和 j 位置反了 ; 外层大循环 是j 不是 i
所以
应该是:if(a[i]>=a[j]) 改了就好了。
第2个回答  2010-06-24
{if(a[j]>=a[i])
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
应写为
{if(a[j]>=a[i]){
temp=a[j];
a[j]=a[i];
a[i]=temp;}
}
第3个回答  2010-06-24
{if(a[j]>=a[i])
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
应写为
{if(a[j]>=a[i]){
第4个回答  2010-06-24
方法很多
选择法
冒泡法
快速排序
堆排序
哈希
等等
相似回答