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:
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Xây dựng ứng dụng Client-Server với Socket trong Java
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Validations for Enum Types
Spring Data Java 8 Support
Java Program to Check if a Point d lies Inside or Outside a Circle Defined by Points a, b, c in a Pl...
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Generating Random Numbers in a Range in Java
Request a Delivery / Read Receipt in Javamail
Introduction to Eclipse Collections
Bootstrap a Web Application with Spring 5
Java Program to find the peak element of an array using Binary Search approach
Java Program to Perform Right Rotation on a Binary Search Tree
Java Program to Implement Floyd Cycle Algorithm
Java Program to Implement IdentityHashMap API
Model, ModelMap, and ModelAndView in Spring MVC
Create a Custom Exception in Java
Removing all Nulls from a List in Java
Quick Guide to java.lang.System
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Java Program to Check whether Undirected Graph is Connected using BFS
Spring Security Registration – Resend Verification Email
Java 8 Streams peek() API
Java Program to Implement Kosaraju Algorithm
Java Program to Implement Unrolled Linked List
Apache Commons Collections Bag
Hướng dẫn Java Design Pattern – Strategy
Instance Profile Credentials using Spring Cloud
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
The Difference Between map() and flatMap()
Java – Generate Random String
HttpClient 4 – Follow Redirects for POST