Java Program to Implement K Way Merge Algorithm

This is a Java Program to Implement K Way Merge Algorithm. K Way Merge Algorithm is used to merge K sorted arrays of size N into a single array.

Here is the source code of the Java Program to Implement K Way Merge Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/**
 * Java Program to Implement K Way Merge Algorithm
 **/
 
import java.util.Scanner;
 
/** Class KWayMerge **/
public class KWayMerge
{
    /** Function to merge arrays **/
    private int[] merge(int[][] arr) 
    {
        int K = arr.length;
        int N = arr[0].length;
 
        /** array to keep track of non considered positions in subarrays **/
        int[] curPos = new int[K];
 
        /** final merged array **/
        int[] mergedArray = new int[K * N];
        int p = 0;
 
        while (p < K * N)
        {
            int min = Integer.MAX_VALUE;
            int minPos = -1;
            /** search for least element **/
            for (int i = 0; i < K; i++)
            {
                if (curPos[i] < N)
                {
                    if (arr[i][curPos[i]] < min)
                    {
                        min = arr[i][curPos[i]];
                        minPos = i;
                    }
                }                
            }
            curPos[minPos]++;            
            mergedArray[p++] = min;
        }
        return mergedArray;
    }
 
    /** Main method **/
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner( System.in );        
        System.out.println("K Way Merge Test\n");
 
        /** Accept k and n **/
        System.out.println("Enter K and N");
        int K = scan.nextInt();
        int N = scan.nextInt();
 
        int[][] arr = new int[K][N];
        /** Accept all elements **/
        System.out.println("Enter "+ K +" sorted arrays of length "+ N);
 
        for (int i = 0; i < K; i++)
            for (int j = 0; j < N; j++)
                arr[i][j] = scan.nextInt();
 
        KWayMerge kwm = new KWayMerge();
 
        int[] mergedArray = kwm.merge(arr);
        /** Print merged array **/
        System.out.println("\nMerged Array : ");
        for (int i = 0; i < mergedArray.length; i++)
            System.out.print(mergedArray[i] +" ");
        System.out.println(); 
 
    }    
}
K Way Merge Test
 
Enter K and N
5 4
Enter 5 sorted arrays of length 4
2 4 6 19
1 20 35 67
3 5 7 11
45 46 47 48
3 9 100 200
 
Merged Array :
1 2 3 3 4 5 6 7 9 11 19 20 35 45 46 47 48 67 100 200
 
 
 
K Way Merge Test
 
Enter K and N
4 5
Enter 4 sorted arrays of length 5
2 4 6 19 94
2 8 5 19 63
3 5 7 11 13
1 10 25 50 100
 
Merged Array :
1 2 2 3 4 5 6 7 8 5 10 11 13 19 19 25 50 63 94 100
 
 
 
K Way Merge Test
 
Enter K and N
3 10
Enter 3 sorted arrays of length 10
3 6 9 12 15 18 21 24 27 30
2 5 8 11 14 17 20 23 26 29
1 4 7 10 13 16 19 22 25 28
 
Merged Array :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Related posts:

Java Program to Implement Hamiltonian Cycle Algorithm
Spring Cloud – Bootstrapping
Registration with Spring Security – Password Encoding
Java Program to Implement HashSet API
Chuyển đổi Array sang ArrayList và ngược lại
Java Program to Implement Singly Linked List
Hướng dẫn sử dụng Java Annotation
Hướng dẫn Java Design Pattern – Observer
Java Program to Find Nearest Neighbor for Dynamic Data Set
CyclicBarrier in Java
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Java Program to Perform Addition Operation Using Bitwise Operators
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Send email with authentication
Java Program to Generate Random Hexadecimal Byte
Converting between an Array and a List in Java
Convert String to int or Integer in Java
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Java Program to Perform the Unique Factorization of a Given Number
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Spring WebClient Requests with Parameters
Spring Data Reactive Repositories with MongoDB
DistinctBy in the Java Stream API
Java Program to Compute the Area of a Triangle Using Determinants
Spring AMQP in Reactive Applications
Java Program to Implement Sorted Vector
Java Program to Implement Hash Tables with Quadratic Probing
Java Program to Implement Miller Rabin Primality Test Algorithm
Java Program to Describe the Representation of Graph using Incidence List
Jackson Date
Spring Boot - Quick Start
Java Program to Check if a Given Binary Tree is an AVL Tree or Not