c++的排序问题,实在看不出哪错了,求解?
有n个数,要对它们按从小到大排列。
输入有若干种情况,每种情况一行。每行的第一个数是n(1<=n<=100),接着是n个整数。
#include<iostream>
using namespace std;
void main()
{
int a[100],temp,n,i,j;
cin>>n;
for( i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n-1;i++)
for(j=0;i<n-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for(i=0;i<n;i++)
cout<<a[i]<<endl;
}
第2种
#include<iostream>
using namespace std;
void main()
{
int n, small,a[100];
while(true)
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
SelectSort(a,n);
cout<<a[i]<<endl;
}
}
int SelectSort(int a[],int n)
{
int small;
for(int i=0;i<n-1;i++)
{
small=i;
int m;
for(int j=i+1;j<n;j++)
if(a[j]<a[small])
small=j;
a[i]=a[m];
a[i]=a[small];
a[small]=a[m];
}
return a[i];
}
两种都运行不出来,郁闷啦!求解
[解决办法]
#include<iostream>
using namespace std;
void main()
{
int a[100],temp,n,i,j;
cin>>n;
for( i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for(i=n-1;i>=0;i--)
cout<<a[i]<<endl;
}