c++选择法排序问题

#include <iostream>
using namespace std;
int main()
{
int a[4];
int i,j,t,min;
cout<<"input 4 numbers:"<<endl;
for(i=0;i<4;i++)
cin>>a[i];
for(i=0;i<=3;i++)
{min=i;
for(j=i+1;j<=4;j++)
if(a[min]>a[j]) min=j;
t=a[j];a[j]=a[min];a[min]=t;
}
cout<<"the sorted numbers:"<<endl;
for(i=0;i<4;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
是选择法为四个整数排序,排不出来大小,到底哪错了啊

if(a[min]>a[j]) min=j;此时a[j]和a[min]相等,所以下面的语句无意义!
t=a[j];a[j]=a[min];a[min]=t;

可改为:
for(i=0;i<=3;i++)
{min=a[i];
for(j=i+1;j<=4;j++)
if(min>a[j]) {t=a[j];a[j]=min;min=t;}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
#include <iostream>
using namespace std;
int main()
{
int a[4];
int i,j,t,min;
cout<<"input 4 numbers:"<<endl;
for(i=0;i<4;i++)
cin>>a[i];
for(i=0;i<=3;i++)
{min=i;
for(j=i+1;j<=4;j++){
if(a[min]>a[j])
{
t=a[j];
a[j]=a[min];
a[min]=t;}
}
}
cout<<"the sorted numbers:"<<endl;
for(i=0;i<4;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

已改好 编译通过 从小到大排本回答被提问者采纳
相似回答