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:
Hướng dẫn Java Design Pattern – Flyweight
Apache Commons Collections BidiMap
Java 8 Stream findFirst() vs. findAny()
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Notify User of Login From New Device or Location
Spring Web Annotations
Check if a String is a Palindrome in Java
Java Program to Compute Discrete Fourier Transform Using Naive Approach
Java Program to Implement Warshall Algorithm
Java 9 Stream API Improvements
Spring MVC Setup with Kotlin
Java Program to implement Sparse Vector
How to use the Spring FactoryBean?
New Features in Java 12
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Check If a String Is Numeric in Java
Tips for dealing with HTTP-related problems
Hướng dẫn Java Design Pattern – Null Object
Spring AMQP in Reactive Applications
Guide to Java Instrumentation
Java Program to Implement Graph Coloring Algorithm
Changing Annotation Parameters At Runtime
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Giới thiệu Json Web Token (JWT)
Java Program to Implement Knight’s Tour Problem
Spring Cloud – Securing Services
Java Program to Find Inverse of a Matrix
Java Program to Implement Radix Sort
Introduction to Java Serialization
Java Program to Implement Quick Sort Using Randomization
Java Program to Solve the Fractional Knapsack Problem
Java Program to Implement PriorityBlockingQueue API