顺序表应用5:有序顺序表归并

简介: 顺序表应用5:有序顺序表归并

顺序表应用5:有序顺序表归并

Time Limit: 100 ms Memory Limit: 880 KiB

SubmitStatistic

Problem Description

已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A、B表里所有元素,并且C表仍然保持有序。

Input

输入分为三行:

第一行输入m、n(1<=m,n<=10000)的值,即为表A、B的元素个数;

第二行输入m个有序的整数,即为表A的每一个元素;

第三行输入n个有序的整数,即为表B的每一个元素;

Output

输出为一行,即将表A、B合并为表C后,依次输出表C所存放的元素。

Sample Input

5 3
1 3 5 6 9
2 4 10

Sample Output

1 2 3 4 5 6 9 10

Hint

Source

#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
    int data[100010];
    int last;
} ST;
void creat(ST *head)
{
    int i;
    for(i = 0; i < head->last; i++)
    {
        scanf("%d", &head->data[i]);
    }
}
void bine(ST *head, ST *tail, ST *p)
{
    int i, j, k;
    i = 0, j = 0, k = 0;
    while(i < head->last && j < tail->last)
    {
        if(head->data[i] < tail->data[j])
        {
            p->data[k++] = head->data[i++];
        }
        else
        {
            p->data[k++] = tail->data[j++];
        }
    }
    if(i == head->last)
    {
        for(j = j; j < tail->last; j++)
        {
            p->data[k++] = tail->data[j];
        }
    }
    if(j == tail->last)
    {
        for(i = i; i < head->last; i++)
        {
            p->data[k++] = head->data[i];
        }
    }
    p->last = k;
}
int main()
{
    int i;
    ST *head, *tail, *p;
    head = (ST *)malloc(sizeof(ST));
    tail = (ST *)malloc(sizeof(ST));
    p = (ST *)malloc(sizeof(ST));
    scanf("%d%d", &head->last, &tail->last);
    creat(head);
    creat(tail);
    bine(head,tail,p);
    for(i = 0; i < p->last; i++)
    {
        if(i == p->last - 1)
        {
            printf("%d\n", p->data[i]);
        }
        else
        {
            printf("%d ", p->data[i]);
        }
    }
    return 0;
}

 


相关文章
|
1月前
|
存储
顺序存储之顺序表
这篇文章介绍了顺序表的创建、操作和顺序存储的实现,包括定义数据类型、构建顺序表结构、顺序表的创建、扩容、数据插入、删除、遍历和销毁。
29 0
|
6月前
|
存储 机器学习/深度学习 人工智能
4.线性表之数组
4.线性表之数组
76 0
|
6月前
|
存储 索引
两个非递减顺序表合并成一个非递减顺序表
两个非递减顺序表合并成一个非递减顺序表
70 0
|
存储 机器学习/深度学习 缓存
链表和有序二叉树插入元素时真的比数组快吗?
公司有位C++标准委员会的顾问大佬,一年会有几次视频讲座,分享一些编程要点或者经验。很多时候都是C++很基础的方面,但是他的讲解视频真的很深入浅出,有时候会“打破”一些理所应当的观点,这篇文章就是让我觉得很有趣,并且意想不到的地方,在这里分享一下。
链表和有序二叉树插入元素时真的比数组快吗?
|
机器学习/深度学习 算法 C语言
有关时间复杂度空间复杂度的计算和线性表中的顺序表的基础讲解
一、C语言后的基础数据结构的简单学习 (一、)时间复杂度和空间复杂度的计算 (1.)时间复杂度的概念和我如何进行对一个代码的时间复杂度的计算 (2.)空间复杂度 (3.)总结:所以以上就是时间复杂度和空间复杂度的一些讲解 (二、)线性表中的顺序表的讲解
|
存储 C++
线性表的顺序存储——顺序表
线性表的顺序存储——顺序表
174 2
线性表的顺序存储——顺序表
|
机器学习/深度学习 算法
删除重复元素(顺序表、单链表)
用顺序表和单链表分别实现删除操作
403 0
删除重复元素(顺序表、单链表)
力扣88.合并两个有序数组【顺序表】
力扣88.合并两个有序数组【顺序表】
129 0
力扣88.合并两个有序数组【顺序表】
|
算法 C++
C++实现线性表 - 01 数组
从今天开始,我将为大家用c++代码来实现常见数据结构与算法的代码,我们先从大家最熟悉的数组开始实现。
175 0
C++实现线性表 - 01 数组