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:
Kruskal's Algorithm
Java Program to Implement Best-First Search
Java Scanner hasNext() vs. hasNextLine()
How to Define a Spring Boot Filter?
Ép kiểu trong Java (Type casting)
Removing all Nulls from a List in Java
Integer Constant Pool trong Java
Java Program to Implement LinkedBlockingQueue API
Java Program to Find Transpose of a Graph Matrix
Spring Cloud Connectors and Heroku
Java Program to Check if it is a Sparse Matrix
Introduction to Project Reactor Bus
LinkedHashSet trong Java hoạt động như thế nào?
Java Program to Implement Interpolation Search Algorithm
Java Program to Show the Duality Transformation of Line and Point
Reversing a Linked List in Java
Spring NoSuchBeanDefinitionException
Transaction Propagation and Isolation in Spring @Transactional
Validations for Enum Types
Using the Not Operator in If Conditions in Java
Flattening Nested Collections in Java
Hướng dẫn Java Design Pattern – Prototype
Custom Thread Pools In Java 8 Parallel Streams
Tips for dealing with HTTP-related problems
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Web Services – JAX-WS – SOAP
Java Program to Perform Finite State Automaton based Search
Spring Boot Change Context Path
Phương thức tham chiếu trong Java 8 – Method References
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Java Program to Implement Attribute API
Weak References in Java