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 Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to Implement Hash Tree
Java Program to Find Nearest Neighbor for Static Data Set
A Guide to EnumMap
Java Program to Construct an Expression Tree for an Infix Expression
Hướng dẫn Java Design Pattern – Abstract Factory
Java Program to Implement the Checksum Method for Small String Messages and Detect
Java Program to Implement Pollard Rho Algorithm
Uploading MultipartFile with Spring RestTemplate
Spring Boot - Cloud Configuration Server
New Features in Java 15
Java Program to Find the Longest Path in a DAG
Mockito and JUnit 5 – Using ExtendWith
Merging Streams in Java
Giới thiệu Google Guice – Injection, Scope
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Convert Hex to ASCII in Java
Spring Boot - Batch Service
Wrapper Classes in Java
Java Program to Implement Adjacency Matrix
HttpClient Connection Management
Java Program to Implement Hamiltonian Cycle Algorithm
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Receive email by java client
Spring Boot - Introduction
Cơ chế Upcasting và Downcasting trong java
Java Program to Implement Sorted Circularly Singly Linked List
Java Program to Implement Sieve Of Eratosthenes
Entity To DTO Conversion for a Spring REST API
Logout in an OAuth Secured Application
Java Program to Implement Find all Back Edges in a Graph
Guide to java.util.concurrent.BlockingQueue