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:
Calling Stored Procedures from Spring Data JPA Repositories
An Intro to Spring Cloud Zookeeper
A Guide to TreeSet in Java
Creating a Web Application with Spring 5
Java 9 Stream API Improvements
Spring WebFlux Filters
Java Program to Perform Matrix Multiplication
Java Program to Find the GCD and LCM of two Numbers
Guide to java.util.concurrent.Future
Refactoring Design Pattern với tính năng mới trong Java 8
Mapping Nested Values with Jackson
Spring 5 Functional Bean Registration
Intersection of Two Lists in Java
4 tính chất của lập trình hướng đối tượng trong Java
Spring Boot - Twilio
Tạo số và chuỗi ngẫu nhiên trong Java
Spring Data JPA @Modifying Annotation
Spring MVC Custom Validation
Spring Boot - Building RESTful Web Services
Java Program to Construct K-D Tree for 2 Dimensional Data
Java Program to Implement the Hill Cypher
Java Program to Implement Min Heap
Spring Security 5 for Reactive Applications
Java Program to Implement String Matching Using Vectors
Java Program to Implement Gabow Algorithm
Thao tác với tập tin và thư mục trong Java
Java Program to Implement the Checksum Method for Small String Messages and Detect
New in Spring Security OAuth2 – Verify Claims
Basic Authentication with the RestTemplate
Introduction to Spring Security Expressions
How to Read a Large File Efficiently with Java
Introduction to Spring Cloud Rest Client with Netflix Ribbon