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:
A Guide to Queries in Spring Data MongoDB
Spring @RequestMapping New Shortcut Annotations
How to Find an Element in a List with Java
Quick Guide to Spring Controllers
Java Program to Implement Pairing Heap
How to Break from Java Stream forEach
Java Program to Perform Searching Based on Locality of Reference
Java Program to Implement the Hill Cypher
Java Program to Check whether Directed Graph is Connected using DFS
Java Program to Generate Random Hexadecimal Byte
Spring REST API with Protocol Buffers
Hướng dẫn Java Design Pattern – Proxy
Java Program to Implement Word Wrap Problem
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Guide to Guava Table
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Đồng bộ hóa các luồng trong Java
Spring Boot - Hystrix
Logging a Reactive Sequence
Java Program to Implement a Binary Search Tree using Linked Lists
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Testing in Spring Boot
Debug a HttpURLConnection problem
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Implement Floyd-Warshall Algorithm
Check If a File or Directory Exists in Java
How to Use if/else Logic in Java 8 Streams
Java Convenience Factory Methods for Collections
Sắp xếp trong Java 8
Phương thức forEach() trong java 8
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java Program to Implement Patricia Trie