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:
Updating your Password
Giới thiệu SOAP UI và thực hiện test Web Service
Cài đặt và sử dụng Swagger UI
Object cloning trong java
Redirect to Different Pages after Login with Spring Security
Java Program to Implement VList
Spring Boot - Actuator
Daemon Threads in Java
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Hướng dẫn Java Design Pattern – Chain of Responsibility
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Solve any Linear Equation in One Variable
Spring Cloud – Securing Services
Spring Security Authentication Provider
Java Program to Check for balanced parenthesis by using Stacks
Java Program to Implement Stack API
Add Multiple Items to an Java ArrayList
Prevent Cross-Site Scripting (XSS) in a Spring Application
Java Program to Implement Max-Flow Min-Cut Theorem
Java Program to Implement Sorted Singly Linked List
A Guide to ConcurrentMap
Java Program to Perform Searching in a 2-Dimension K-D Tree
Introduction to Spring Data JDBC
Apache Commons Collections BidiMap
Hướng dẫn Java Design Pattern – Interpreter
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Java Program to Implement Aho-Corasick Algorithm for String Matching
LinkedHashSet trong java
Java Program to Implement Cartesian Tree
Tính đóng gói (Encapsulation) trong java
HttpClient 4 – Follow Redirects for POST
Hướng dẫn Java Design Pattern – Command