【每日一题】BC100 有序数列合并

题目链接

【每日一题】BC100 有序数列合并

1.题目分析

在这里插入图片描述
原题让我们输入两组数据,在进行合并和排序。

方法一

暴力解法:建立两个数组,直接拿数组中元素进行比较,排序。

方法二

巧妙解法:只建立一个数组,将两组数据放入一个数组,进行冒泡排序。

2.代码展示

  1. 方法一
    代码如下:
int main()
{
    
    
    int m, n, i;
    int a[1000] = {
    
     0 }, b[1000] = {
    
     0 };
    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < m; i++)
        scanf("%d", &b[i]);
    int x = 0, y = 0;
    while (y < m || x < n)
    {
    
    
        if (a[x] < b[y] && x < n)
        {
    
    
            printf("%d ", a[x]);
            x++;
        }
        else if (y < m)
        {
    
    
            printf("%d ", b[y]);
            y++;
        }
        else
        {
    
    
            printf("%d ", a[x]);
            x++;
        }
    }
    return 0;
}

通过将两组数据比较,在++的方式更直接的进行比较。
方法二:

#include <stdio.h>

int main() {
    
    
    int n, m, count;
    int arr[2000] = {
    
     0 };
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++) {
    
    
        scanf("%d", &arr[i]);
    }
    for (int j = 0; j < m; j++) {
    
    
        scanf("%d", &arr[n + j]);
    }
    for (int i = 0; i < n + m; i++) {
    
    
        for (int j = i + 1; j < n + m; j++) {
    
    
            if (arr[i] > arr[j]) {
    
    
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    for (int i = 0; i < n + m; i++) {
    
    
        printf("%d ", arr[i]);
    }
    return 0;
}

先进性放入一个数组,在进行冒泡排序。

在这里插入图片描述
多多点赞加关注。

猜你喜欢

转载自blog.csdn.net/m0_73228832/article/details/129000183