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