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:
An Intro to Spring Cloud Security
Java Program to Implement Skip List
How to Get All Spring-Managed Beans?
Java Program to Implement the String Search Algorithm for Short Text Sizes
Java Program to Perform the Unique Factorization of a Given Number
Java Program to Perform Cryptography Using Transposition Technique
HttpClient 4 Cookbook
HashSet trong java
CharSequence vs. String in Java
Java Program to Implement Rope
Java Program to Check whether Graph is a Bipartite using DFS
Spring Boot - Zuul Proxy Server and Routing
Hướng dẫn sử dụng Printing Service trong Java
Java Program to Implement Knight’s Tour Problem
Hướng dẫn Java Design Pattern – DAO
Model, ModelMap, and ModelAndView in Spring MVC
Debugging Reactive Streams in Java
Hướng dẫn sử dụng Java Generics
Java Program to Implement VList
Java – InputStream to Reader
Hướng dẫn Java Design Pattern – Singleton
A Guide to TreeMap in Java
Chuyển đổi Array sang ArrayList và ngược lại
Jackson Ignore Properties on Marshalling
Call Methods at Runtime Using Java Reflection
Queue và PriorityQueue trong Java
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Guide to Spring 5 WebFlux
Convert char to String in Java
Hướng dẫn sử dụng String Format trong Java
Java InputStream to String
Java Program to Implement Expression Tree