Merge Array Java Program | ISC Computer Science 2021 Paper 1

Design a class MergeArray to merge two single-dimensional sorted arrays into one single-dimensional array in ascending order without using any sorting technique.

Example:
Array 1: {2, 3, 6, 9, 11, 19, 26}
Array 2: {1, 2, 5, 7, 12, 45}
Merged Array = {1, 2, 2, 3, 5, 6, 7, 9, 11, 12, 19, 26, 45}

Some of the members of the class are given below:

Class name: MergeArray
Data members/instance variables:
arr1[]: to store integers in the first array
arr2[]: to store integers in the second array
arr[]: to store the elements of both the arrays in ascending order
m: integer to store the size of the first array
n: integer to store the size of the second array
Methods/Member functions:
MergeArray(int mm, int nn): parameterized constructor to initialize the data members m = mm and n = nn
void fillarray(): to enter integer elements in both the arrays arr1[] and arr2[] in ascending order
void merge(): merges the elements of arr1[] and arr2[] and stores it in arr[] in ascending order
void display(): displays the elements of the merged array

Specify the class MergeArray giving details of the constructor(), void fillarray(), void merge() and void display(). Define a main() function to create an object and call the functions accordingly to enable the task.

import java.util.Scanner;
class MergeArray{
    int arr1[];
    int arr2[];
    int arr[];
    int m;
    int n;
    public MergeArray(int mm, int nn){
        m = mm;
        n = nn;
        arr1 = new int[m];
        arr2 = new int[n];
        arr = new int[m + n];
    }
    public void fillarray(){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter elements for array 1:");
        for(int i = 0; i < m;){
            if(i == 0)
                arr1[i++] = Integer.parseInt(in.nextLine());
            else{
                int temp = Integer.parseInt(in.nextLine());
                while(temp < arr1[i - 1]){
                    System.out.print("Re-enter the number: ");
                    temp = Integer.parseInt(in.nextLine());
                }
                arr1[i++] = temp;
            }
        }
        System.out.println("Enter elements for array 2:");
        for(int i = 0; i < n;){
            if(i == 0)
                arr2[i++] = Integer.parseInt(in.nextLine());
            else{
                int temp = Integer.parseInt(in.nextLine());
                while(temp < arr2[i - 1]){
                    System.out.print("Re-enter the number: ");
                    temp = Integer.parseInt(in.nextLine());
                }
                arr2[i++] = temp;
            }
        }
    }
    public void merge(){
        int index = 0;
        int i = 0, j = 0;
        for(; i < m && j < n;){
            if(arr1[i] < arr2[j])
                arr[index++] = arr1[i++];
            else
                arr[index++] = arr2[j++];
        }
        while(i < m)
            arr[index++] = arr1[i++];
        while(j < n)
            arr[index++] = arr2[j++];
    }
    public void display(){
        for(int i = 0; i < arr.length; i++)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print("Size of array 1: ");
        int x = Integer.parseInt(in.nextLine());
        System.out.print("Size of array 2: ");
        int y = Integer.parseInt(in.nextLine());
        MergeArray obj = new MergeArray(x, y);
        obj.fillarray();
        obj.merge();
        System.out.print("Merged array: ");
        obj.display();
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *