//代码已经AC,去掉部分多余花括符..^_^
#include
using namespace std;
int main()
{
int T,N,n,i,j;
long int a[1002]; //题目有说明输入的数据类型均为int ,所以没必要定义为long
cin>>T; //已经有多组数据测试,添加while()反而无法AC
while (T--)
{
cin>>N;
n=N;
i=0;
while (n--)
cin>>a[i++];
for (j=1;j
if (a[i] {
n=a[i];
a[i]=a[i-1];
a[i-1]=n;
}
for (i=0;i
cout< if (i==(N-1)) //貌似对最后一个输出后要求直接换行,加空格后
cout<
cout<<" ";
}
}
return 0;
}
冒泡排序么
你题目没看清, 把while(cin>>T)改成cin>>T估计就行了
T只要输入一次的
另外给你几个建议:
1.做ACM题最好输入输出用c语言的scanf和printf,这样会快很多
2.这题是排序,最好用快速排序,或者直接用C++ STL中的qsort函数,时间复杂度可以降低到O(nlogn),不过这题很简单,估计最后排好序都能过
不用long int,题目说int就行了
你a数组是从0开始存的,而你排序却知道1,即有一个数没参与排序
再有就是把while(cin>>t)改成cin>>t;就行了
我的代码
#include
using namespace std;
int main()
{
int t,n,i,j,k;
int a[1001];
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&a[i]);
for (i=1;i
k=i;
for (j=i+1;j<=n;j++)
if (a[j] k=j;
swap(a[i],a[k]);
}
printf("%d",a[1]);
for (i=2;i<=n;i++)
printf(" %d",a[i]);
puts("");
}
return 0;
}
#include
#include
#include
int main()
{
int p,q,n,max,i,j,t,a,b[1000];
int c[1000];
while(scanf("%d",&t)!=EOF)
{
memset(c,-1,1000);
for(i=0;i
scanf("%d",&a);
for(j=0;j scanf("%d",&b[j]);
for(p=0;p {
max=-1;
for(q=0;q {
if(b[q]>max)
{max=b[q];n=q;}
}
c[p]=max;b[n]=-1;
}
for(j=0;;j++)
{if(c[j]==-1)
{p=j-1;break;}
}
for(;p>0;p--)
printf("%d ",c[p]);
printf("%d",c[0]);
printf("\n");
}
}
}