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:
Inheritance with Jackson
Java Program to Implement the Program Used in grep/egrep/fgrep
Java Program to Implement WeakHashMap API
Hướng dẫn Java Design Pattern – Template Method
How to Implement Caching using Adonis.js 5
Java Program to Generate Randomized Sequence of Given Range of Numbers
Java Program to Implement HashTable API
Luồng Daemon (Daemon Thread) trong Java
Spring Data MongoDB – Indexes, Annotations and Converters
How to Count Duplicate Elements in Arraylist
Guide to ThreadLocalRandom in Java
Java Program to Implement Disjoint Set Data Structure
Java Program to Implement Bubble Sort
Debugging Reactive Streams in Java
Spring Boot - Batch Service
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
A Custom Media Type for a Spring REST API
Java Program to Implement Sparse Array
Java NIO2 Path API
Spring Cloud Connectors and Heroku
Java 8 Stream API Analogies in Kotlin
Hướng dẫn Java Design Pattern – Observer
Java Program to Find Strongly Connected Components in Graphs
Removing all Nulls from a List in Java
Guide to the Volatile Keyword in Java
Control the Session with Spring Security
Java Program to Describe the Representation of Graph using Adjacency Matrix
Guide to WeakHashMap in Java
Java Program to Implement LinkedBlockingDeque API
Map Serialization and Deserialization with Jackson
Object Type Casting in Java
Java Program to Implement Sieve Of Eratosthenes