This is a java program to implement merge sort algorithm using linked list.
Here is the source code of the Java Program to Implement Merge Sort Algorithm on Linked List. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java to sort numbers of Linked List using Merge Sort
import java.util.Random;
class Node
{
public int item;
public Node next;
public Node(int val)
{
item = val;
}
public Node()
{}
public void displayNode()
{
System.out.print("[" + item + "] ");
}
}
class LinkedList
{
private Node first;
public LinkedList()
{
first = null;
}
public boolean isEmpty()
{
return (first == null);
}
public void insert(int val)
{
Node newNode = new Node(val);
newNode.next = first;
first = newNode;
}
public void append(Node result)
{
first = result;
}
public void display()
{
Node current = first;
while (current != null)
{
current.displayNode();
current = current.next;
}
System.out.println("");
}
public Node extractFirst()
{
return first;
}
public Node MergeSort(Node headOriginal)
{
if (headOriginal == null || headOriginal.next == null)
return headOriginal;
Node a = headOriginal;
Node b = headOriginal.next;
while ((b != null) && (b.next != null))
{
headOriginal = headOriginal.next;
b = (b.next).next;
}
b = headOriginal.next;
headOriginal.next = null;
return merge(MergeSort(a), MergeSort(b));
}
public Node merge(Node a, Node b)
{
Node temp = new Node();
Node head = temp;
Node c = head;
while ((a != null) && (b != null))
{
if (a.item <= b.item)
{
c.next = a;
c = a;
a = a.next;
}
else
{
c.next = b;
c = b;
b = b.next;
}
}
c.next = (a == null) ? b : a;
return head.next;
}
}
class Merge_Sort
{
public static void main(String[] args)
{
LinkedList object = new LinkedList();
Random random = new Random();
int N = 20;
for (int i = 0; i < N; i++)
object.insert(Math.abs(random.nextInt(100)));
System.out.println("List items before sorting :");
object.display();
object.append(object.MergeSort(object.extractFirst()));
System.out.println("List items after sorting :");
object.display();
}
}
Output:
$ javac Merge_Sort.java $ java Merge_Sort List items before sorting : [41] [11] [6] [13] [41] [62] [26] [46] [71] [16] [52] [57] [23] [81] [25] [4] [20] [75] [68] [51] List items after sorting : [4] [6] [11] [13] [16] [20] [23] [25] [26] [41] [41] [46] [51] [52] [57] [62] [68] [71] [75] [81]
Related posts:
Prevent Brute Force Authentication Attempts with Spring Security
Intersection of Two Lists in Java
Write/Read cookies using HTTP and Read a file from the internet
Spring Boot - Admin Client
Java Program to Implement Gauss Jordan Elimination
Java Program to Find Minimum Element in an Array using Linear Search
Jackson Exceptions – Problems and Solutions
Java Program to Perform Deletion in a BST
Java Program to Check Cycle in a Graph using Graph traversal
Java Program to Find the Mode in a Data Set
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Get and Post Lists of Objects with RestTemplate
Kuhn's Algorithm for Maximum Bipartite Matching
Quick Guide on Loading Initial Data with Spring Boot
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Spring @RequestParam Annotation
Java Program to Implement Singly Linked List
Java – Rename or Move a File
Send email with SMTPS (eg. Google GMail)
Java Program to Generate All Pairs of Subsets Whose Union Make the Set
Java Program to Check Cycle in a Graph using Topological Sort
Java Program to Find the Longest Path in a DAG
Guide to Spring Cloud Kubernetes
Convert a Map to an Array, List or Set in Java
A Guide to BitSet in Java
Guide to the Fork/Join Framework in Java
Java Program to Implement Meldable Heap
Guide to Mustache with Spring Boot
Đồng bộ hóa các luồng trong Java
Using JWT with Spring Security OAuth
Spring 5 WebClient