列表

详情


KS13. 合并数组

描述

请实现一个函数,功能为合并两个升序数组为一个升序数组

输入的格式是用逗号隔开的数字。

数据范围:输入的字符串长度满足

输入描述

输入有多个测试用例,每个测试用例有1-2行,每行都是以英文逗号分隔从小到大排列的数字

输出描述

输出一行以英文逗号分隔从小到大排列的数组

示例1

输入:

1,5,7,9
2,3,4,6,8,10

输出:

1,2,3,4,5,6,7,8,9,10

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-07-17

#include<stdio.h>
int main()
{
    int a[100]={0};
    int b[100]={0};
    int i,j,t,n;
    i=0;
    while (1)
    {
        scanf("%d",&a[i]);
        b[i]=a[i];
        i++;
        if(getchar()=='\n') break;
    }
    while (scanf("%d",&a[i])!=EOF)
    {
        b[i]=a[i];
        i++;
        if(getchar()=='\n') break;
    }

    n=i;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(b[j]>b[j+1])
            {
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            }
        }
    }

    for(i=0;i<n;i++)
    {
        printf("%d",b[i]);
        if(i!=n-1) printf(",");
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 344KB, 提交时间: 2021-09-01

#include<stdio.h>
int main()
{
    int a[100]={0};
    int b[100]={0};
    int i,j,t,n;
    i=0;
    while (scanf("%d",&a[i])!=EOF)
    {
        //scanf("%d",&a[i]);
        b[i]=a[i];
        i++;
        if(getchar()=='\n') break;
    }
    while (scanf("%d",&a[i])!=EOF)
    {
        b[i]=a[i];
        i++;
        if(getchar()=='\n') break;
    }

    n=i;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(b[j]>b[j+1])
            {
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            }
        }
    }

    for(i=0;i<n;i++)
    {
        printf("%d",b[i]);
        if(i!=n-1) printf(",");
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2020-03-10

#include<stdio.h>
#include<string.h>

int main()
{
    int i=0,j=0,n,m,len1,len2;
    int a[100],b[100],c;

    /*scanf("%s",&a); 
    scanf("%s",&b);
    len1=strlen(a);
    len2=strlen(b);*/
     while(1)
    { 
        scanf("%d",&a[i]);
        i++;
        if(getchar()=='\n')
        {
            break;
        }
    }
    
    while(scanf("%d",&b[j])!=EOF)
    {
        j++;
        if(getchar()=='\n')
            break;
    }
    for(n=0;n<j;n++)
      a[n+i] = b[n];
    
    
    for(m=0;m<i+j-1;m++)
    {
    	for(n=0;n<i+j-1-m;n++)
		{
			if(a[n]>a[n+1])
			{
				c = a[n];a[n] = a[n+1];a[n+1] = c;
			}
		}
    }
    
     for(n=0;n<i+j-1;n++){
         printf("%d,",a[n]); 
    }
     printf("%d",a[n]);
}

C 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2022-01-15

#include <stdio.h>

int main ()
{
    int a[100] = {0};
    int b[100] = {0};
    int i=0,j=0,temp,n;
 
       while (scanf("%d",&a[i])!=EOF)
    {
        //scanf("%d",&a[i]);
        b[i]=a[i];
        i++;
        if(getchar()=='\n') break;
    }
    while (scanf("%d",&a[i])!=EOF)
    {
        b[i]=a[i];
        i++;
        if(getchar()=='\n') break;
    }
    n=i;
    
//         for(i=0;i<n-1;i++)
//     {
//         for(j=0;j<n-1-i;j++)
//         {
//             if(b[j]>b[j+1])
//             {
//                 temp=b[j];
//                 b[j]=b[j+1];
//                 b[j+1]=temp;
//             }
//         }
//     }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(b[i]>b[j])
            {
                temp = b[i];
                b[i]=b[j];
                b[j]=temp;                
            }
        }
    }
     for(i=0;i<n;i++)
     {
         printf("%d",b[i]);
          if(i!=n-1) printf(",");
     } 
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2022-04-04

#include<stdio.h>
int main()
{
    int a[100]={0};
    int b[100]={0};
    int i,j,t,n;
    i=0;
    while (1)
    {
        scanf("%d",&a[i]);
       
        i++;
        if(getchar()=='\n') break;
    }
    while (scanf("%d",&a[i])!=EOF)
    {
      
        i++;
        if(getchar()=='\n') break;
    }

    n=i;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }

    for(i=0;i<n;i++)
    {
        printf("%d",a[i]);
        if(i!=n-1) printf(",");
    }
    return 0;
}

上一题