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 Check Whether Graph is DAG
Java Program to implement Circular Buffer
Send an email with an attachment
Java Program to Optimize Wire Length in Electrical Circuit
Java Program to Implement the String Search Algorithm for Short Text Sizes
Finding the Differences Between Two Lists in Java
Java Program to Perform String Matching Using String Library
Spring Boot - Service Components
Convert Character Array to String in Java
Hướng dẫn sử dụng luồng vào ra ký tự trong Java
Servlet 3 Async Support with Spring MVC and Spring Security
Java – Delete a File
Refactoring Design Pattern với tính năng mới trong Java 8
Sử dụng CyclicBarrier trong Java
Jackson – JsonMappingException (No serializer found for class)
Recommended Package Structure of a Spring Boot Project
Using a List of Values in a JdbcTemplate IN Clause
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Spring Boot Security Auto-Configuration
Spring Security Authentication Provider
Java Program to Implement Sparse Array
Sereja and Algorithm
Java Program to Solve TSP Using Minimum Spanning Trees
Java Program to Implement Gaussian Elimination Algorithm
Hamcrest Collections Cookbook
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
A Guide to Apache Commons Collections CollectionUtils
How to Get All Dates Between Two Dates?
Java Program to Represent Graph Using Linked List
Spring Boot - Admin Client
Spring Boot Change Context Path
Hướng dẫn sử dụng luồng vào ra nhị phân trong Java