合并线性表(数据结构实训)(难度系数65)

文章介绍了两种方法来合并两个给定的非递减顺序线性表,一种是使用哈希表存储每个数字出现的次数,另一种是先合并再对数组进行排序。展示了Java代码实现。

题目:

描述:已知两非递减的顺序线性表,要求合并

成一个新的非递减顺序线性表。
输入:输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度,第二行为n个自然数构成的非递减顺序线性表,第三行为自然数m,表示第二个非递减顺序线性表的长度,第四行为m个自然数构成的非递减顺序线性表。
输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。

样例输入:
2
1 3
3
2 3 6

样例输出:
1 2 3 3 6

代码:

方法一:

import java.util.*;

public class Xingyuxingxi {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int []sum=new int[10010];//定义一个稍微大一点的数组
        int a1;
        for (int i = 0; i < a; i++) {
            a1= sc.nextInt();
            sum[a1]++;//用下标储存数
        }
        int b=sc.nextInt();
        int b1;
        for (int i = 0; i < b; i++) {
            b1 = sc.nextInt();
            sum[b1]++;//用下标储存数
        }
        for(int i=0;i<10010;) {//遍历整个数组
            if(sum[i]!=0) {//数组中每存一个值代表,这个数出现了几次,需要输出这个数,然后值-1
                System.out.print(i + " ");
                sum[i]--;
            }
            else {//等于0代表输出完了,接着遍历数组,下标+1
                i++;
            }
        }
    }
}

方法二:

import java.util.*;

public class Xingyuxingxi {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int []c=new int[10010];//定义一个比较大的数组
        int a = sc.nextInt();
        for (int i = 0; i < a; i++) {
            c[i]=sc.nextInt();//将第一组数据存入数组中
        }
        int b = sc.nextInt();
        for (int i = a; i < a+b; i++) {
            c[i]=sc.nextInt();//将第二组在第一组书局后,依次存入数组中
        }
       Arrays.sort(c,0,a+b);//用自带的sort方法从小到大排序
        for (int i = 0; i < a+b; i++) {
            System.out.print(c[i]+" ");//最后依次输出
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星与星熙.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值