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:
Guide to Guava Multimap
Java Program to Perform Addition Operation Using Bitwise Operators
Java Program to Implement ConcurrentLinkedQueue API
Spring Security and OpenID Connect
Spring MVC Content Negotiation
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Finding Max/Min of a List or Collection
Java Program to Implement AttributeList API
Registration – Activate a New Account by Email
Phương thức forEach() trong java 8
Java Program to Implement the Vigenere Cypher
Create a Custom Exception in Java
Java Program to Check if a Matrix is Invertible
Java Program to Implement Hash Tables with Quadratic Probing
Java Program to Perform the Unique Factorization of a Given Number
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Apache Tiles Integration with Spring MVC
Guide to ThreadLocalRandom in Java
Sắp xếp trong Java 8
Removing all Nulls from a List in Java
Request a Delivery / Read Receipt in Javamail
Java NIO2 Path API
Spring Boot - Zuul Proxy Server and Routing
Java Program to Represent Graph Using Linked List
Java Program to Perform Left Rotation on a Binary Search Tree
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Java Program to Implement Horner Algorithm
OAuth2 Remember Me with Refresh Token
Preparing for Merge Sort
Java Program to Find Nearest Neighbor for Static Data Set
Introduction to Eclipse Collections
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays