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

目录

  • 1.题目分析
    • 方法一
    • 方法二
  • 2.代码展示

题目链接

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

1.题目分析

【每日一题】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 

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;
}

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

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

你可能感兴趣的:(c语言,排序算法,算法,数据结构)