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:
Các kiểu dữ liệu trong java
Spring Webflux with Kotlin
Giới thiệu java.io.tmpdir
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
Converting Iterator to List
Custom JUnit 4 Test Runners
Guide to the Synchronized Keyword in Java
JWT – Token-based Authentication trong Jersey 2.x
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Using a Mutex Object in Java
Java Program to Implement String Matching Using Vectors
Java Program to Implement Sieve Of Atkin
Guide to Character Encoding
String Initialization in Java
Spring Boot - Securing Web Applications
Lập trình đa luồng trong Java (Java Multi-threading)
Set Interface trong Java
Spring Cloud – Tracing Services with Zipkin
Spring Data MongoDB Transactions
Java Collections Interview Questions
HandlerAdapters in Spring MVC
Java Program to Compute DFT Coefficients Directly
Java Program to Use rand and srand Functions
Concatenating Strings In Java
Chuyển đổi từ HashMap sang ArrayList
MyBatis with Spring
Java Map With Case-Insensitive Keys
Checking for Empty or Blank Strings in Java
Các nguyên lý thiết kế hướng đối tượng – SOLID
TreeSet và sử dụng Comparable, Comparator trong java
Java Program to Implement Naor-Reingold Pseudo Random Function
Java Program to Implement Pairing Heap