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:
Remove All Occurrences of a Specific Value from a List
Introduction to Liquibase Rollback
Hướng dẫn sử dụng Java Annotation
New Features in Java 11
Converting a Stack Trace to a String in Java
The DAO with Spring and Hibernate
Using JWT with Spring Security OAuth
String Operations with Java Streams
Converting Between Byte Arrays and Hexadecimal Strings in Java
Java Program to Implement Stack
Login For a Spring Web App – Error Handling and Localization
Uploading MultipartFile with Spring RestTemplate
Introduction to Java Serialization
Một số từ khóa trong Java
Java Program to Use Boruvka’s Algorithm to Find the Minimum Spanning Tree
“Stream has already been operated upon or closed” Exception in Java
Different Ways to Capture Java Heap Dumps
Java Program to Convert a Decimal Number to Binary Number using Stacks
Java Program to Find Maximum Element in an Array using Binary Search
Java 8 – Powerful Comparison with Lambdas
Java Program to Implement PriorityBlockingQueue API
Logging in Spring Boot
Derived Query Methods in Spring Data JPA Repositories
Spring 5 Functional Bean Registration
Converting Iterator to List
Java Program to subtract two large numbers using Linked Lists
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Functional Interfaces in Java 8
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
A Guide to Spring Cloud Netflix – Hystrix
Spring Security Logout
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm