33,317
社区成员
发帖
与我相关
我的任务
分享 while(scanf("%d%d",&n,&x) && (n!=0 || x!=0))
{ flag=0;
if(n==0)
{printf("%d\n",x);
continue;}
for(i=0;i<n;i++)
{scanf("%d",&temp);
if(temp<x || flag==1)
printf("%d",temp);
else
{printf("%d %d",x,temp);
flag=1;}
if(i!=n-1)
printf(" ");
}
printf("\n");
}
return 0;
}
二分显然比你这个遍历比较次数少![/quote] 我一个一个读数的时候就同时在输出,四个变量,没有数组,压根没遍历,在读完数据的时候就完事了、、、、、、你的二分输入数据读完再查找、移位,再输出。
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,x,temp,flag;
while(scanf("%d%d",&n,&x) && (n!=0 || x!=0))
{ flag=0;
if(n==0)
{printf("%d\n",x);
continue;}
for(i=0;i<n;i++)
{scanf("%d",&temp);
if(temp<x || flag==1)
printf("%d",temp);
else
{printf("%d %d",x,temp);
flag=1;}
if(i!=n-1)
printf(" ");
}
printf("\n");
}
return 0;
}
for(c=0;c<n-1;c++)
{
scanf("%d",&a[c]);
}
a[c+1]=m;
这是给数组赋值的吧?
这里赋值有错误,改为
for(c=0;c<n;c++)
{
scanf("%d",&a[c]);
}
a[c]=m;
就行了!
下面两个for循环是排序的吧,但是题目都说了数组已经是有序的了,就不必再重新排序了,直接查找插入就行了吧。