#include<stdio.h>
int main(void)
{
int i,n,t,a[3000],m,q,p,sum;
scanf("%d",&p);
for(q=1;q<=p;q++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sum=0;
for(i=1;i<n;i++)
{
sum=sum+1;
if(a[i]<a[i-1])
{
m=a[i];
for(t=i-1;t>=0;t--)
{
if(t<i-1)
{
sum=sum+1;
}
if(a[t]<m)
{
break;
}
a[t+1]=a[t];
}
a[t+1]=m;
}
}
printf("%d\n",sum);
for(i=0;i<n-1;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[i]);
}
}
请问哪里又错了我运行感觉没毛病但是就说我错了,希望能在基础上改
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 星星不再亮 2021-11-10 15:41关注
模拟一遍 如输入样例 3 2 4 5;
i=1;a[1]<a[0]->2<3成立,m=a[1]=2;
for中t=0,t<i-1不满足,a[t]=a[0]=3<m,不满足,a[1]=a[0],跳出for;
a[t+1]=a[1]=m;a[1]=a[0]=2
没有a[0]等于多少,a[0]没变我修改了一点 我的比较和他输出的不一样,比如 3 2 4 5,我比较了6次,先是比较三次 将最大的放在最后,再比较两次,将第二大的放在第三个,
再比较最后一次将第三大的放在第二位,最后输出
#include<stdio.h>
int main(void)
{
int i,n,a[3000],m,q,t,sum;
scanf("%d",&t);
for(q=1;q<=t;q++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sum=0;
for(i=0;i<n;i++)
{
for(q=1;q<n-i;q++)
{
if(a[q]<a[q-1])
{
m=a[q];
a[q]=a[q-1];
a[q-1]=m;
}
sum++;
}
}
printf("%d\n",sum);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 公众号如何实现点击超链接后自动发送文字
- ¥15 用php隐藏类名和增加类名
- ¥15 算法设计与分析课程的提问
- ¥15 用MATLAB汇总拟合图
- ¥15 智能除草机器人方案设计
- ¥15 对接wps协作接口实现消息发送
- ¥15 SQLite 出现“Database is locked” 如何解决?
- ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
- ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
- ¥100 无网格伽辽金方法研究裂纹扩展的程序