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:
Guide to the Java Queue Interface
Java Program to Construct an Expression Tree for an Infix Expression
Setting a Request Timeout for a Spring REST API
Tính trừu tượng (Abstraction) trong Java
Multipart Upload with HttpClient 4
Chuyển đổi giữa các kiểu dữ liệu trong Java
Feign – Tạo ứng dụng Java RESTful Client
Java – Random Long, Float, Integer and Double
Java Program to Implement Fermat Factorization Algorithm
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Java – Reader to String
Toán tử trong java
Java Program to Implement IdentityHashMap API
Initialize a HashMap in Java
Java Convenience Factory Methods for Collections
Inheritance with Jackson
Java Program to Check whether Graph is Biconnected
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
String Operations with Java Streams
REST Pagination in Spring
Java Program to Describe the Representation of Graph using Incidence List
Java Program to Implement Hash Tables Chaining with List Heads
Java Program to Implement AttributeList API
Truyền giá trị và tham chiếu trong java
Debugging Reactive Streams in Java
Spring Boot - Database Handling
Removing all Nulls from a List in Java
Bootstrapping Hibernate 5 with Spring
Netflix Archaius with Various Database Configurations
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Java Program to Find Basis and Dimension of a Matrix
Java Multi-line String