移动问题(线性表)
时间: 1ms 内存:128M
描述:
编写函数将一整数序列中所有正数移到所有负数之前
输入:
-1 45 3 -23 -56 4 34
输出:
45 3 4 34 -1 -23 -56
示例输入:
-11 -5 3 -23 -6 4 34
示例输出:
3 4 34 -11 -5 -23 -6
提示:
参考答案(内存最优[748]):
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
int m=7,i,j,x,temp,k=0;
p=(int *)malloc(m*sizeof(int));
for(i=0;i<m;i++)
{
scanf("%d",&x);
p[i]=x;
}
for(i=0;i<m;i++)
if(p[i]>0&&i!=0)
{
temp=p[i];
k++;
for(j=i;j>k-1;j--)
p[j]=p[j-1];
p[k-1]=temp;
}
for(i=0;i<m;i++)
printf("%d ",p[i]);
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
int m=7,i,j,x,temp,k=0;
p=(int *)malloc(m*sizeof(int));
for(i=0;i<m;i++)
{
scanf("%d",&x);
p[i]=x;
}
for(i=0;i<m;i++)
if(p[i]>0&&i!=0)
{
temp=p[i];
k++;
for(j=i;j>k-1;j--)
p[j]=p[j-1];
p[k-1]=temp;
}
for(i=0;i<m;i++)
printf("%d ",p[i]);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。