站点图标 陌路寒暄

移动问题(线性表)

移动问题(线性表)

时间: 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; 
} 

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版