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:
Java Program to find the number of occurrences of a given number using Binary Search approach
Introduction to Spring Data MongoDB
Working With Maps Using Streams
Check if a String is a Palindrome in Java
Spring Boot with Multiple SQL Import Files
Guide to Spring 5 WebFlux
Spring MVC + Thymeleaf 3.0: New Features
Java Program to Construct K-D Tree for 2 Dimensional Data
Guide to Escaping Characters in Java RegExps
Java Program to Implement Circular Doubly Linked List
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Spring Boot - File Handling
Learning and Improving Algorithm through contests - Antti Laaksonen
A Guide to WatchService in Java NIO2
Java 8 Collectors toMap
Sử dụng JDBC API thực thi câu lệnh truy vấn dữ liệu
How to Iterate Over a Stream With Indices
Java Program to Implement K Way Merge Algorithm
Java Program to Implement TreeSet API
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Spring Boot - Scheduling
Introduction to Apache Commons Text
Lấy ngày giờ hiện tại trong Java
Spring Security – Reset Your Password
Java Program to Implement Sorted Circular Doubly Linked List
Spring Boot - Tracing Micro Service Logs
Jackson Unmarshalling JSON with Unknown Properties
Converting Between Byte Arrays and Hexadecimal Strings in Java
Generate Spring Boot REST Client with Swagger
Java Program to Check if a Matrix is Invertible
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Java InputStream to Byte Array and ByteBuffer