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 Tarjan Algorithm
Intro to Spring Boot Starters
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
Converting String to Stream of chars
Spring Data JPA @Query
Java Program to Implement Weight Balanced Tree
Java Multi-line String
Mệnh đề Switch-case trong java
Spring Boot: Customize Whitelabel Error Page
Java 8 Stream API Analogies in Kotlin
Java Program to Represent Graph Using Adjacency List
Write/Read cookies using HTTP and Read a file from the internet
Java Program to Implement Rope
Spring – Injecting Collections
Getting a File’s Mime Type in Java
Programmatic Transaction Management in Spring
Java Program to Implement Graph Structured Stack
Java Program to Implement Ternary Heap
Java Web Services – JAX-WS – SOAP
Java Program to Implement Hamiltonian Cycle Algorithm
The Registration Process With Spring Security
Java Program to find the peak element of an array using Binary Search approach
HashMap trong Java hoạt động như thế nào?
Java Program to Encode a Message Using Playfair Cipher
Introduction to the Java ArrayDeque
A Guide to the Java LinkedList
Giới thiệu SOAP UI và thực hiện test Web Service
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Tính đóng gói (Encapsulation) trong java
Simple Single Sign-On with Spring Security OAuth2
MyBatis with Spring
Using the Not Operator in If Conditions in Java