Java Program to Implement Heap Sort Using Library Functions

Problem Description

Given an array of integers, sort the array using heapsort algorithm, as built into the library.

Problem Solution

The idea is to create a priority queue of the array elements. A priority queue is a min-heap. Extract the elements from the priority queue one by one and store them in the array. The array obtained will be sorted.

Program/Source Code

Here is the source code of the Java Program to Implement Heap Sort Using Library Functions. The program is successfully compiled and tested using IDE IntelliJ Idea in Windows 7. The program output is also shown below.

//Java Program to Implement Heap Sort Using Library Functions
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.PriorityQueue;
 
public class HeapSortLib {
    // Function to implement heapsort using priority queue
    static void libraryHeapSort(int[] array){
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
        int i;
        for(i=0; i<array.length; i++){
            priorityQueue.add(array[i]);
        }
        i=0;
        while(!priorityQueue.isEmpty()){
            array[i++] = priorityQueue.poll();
        }
    }
    // Function to read user input
    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int size;
        System.out.println("Enter the size of the array");
        try {
            size = Integer.parseInt(br.readLine());
        } catch (Exception e) {
            System.out.println("Invalid Input");
            return;
        }
        int[] array = new int[size];
        System.out.println("Enter array elements");
        int i;
        for (i = 0; i < array.length; i++) {
            try {
                array[i] = Integer.parseInt(br.readLine());
            } catch (Exception e) {
                System.out.println("An error Occurred");
            }
        }
        System.out.println("The initial array is");
        System.out.println(Arrays.toString(array));
        libraryHeapSort(array);
        System.out.println("The sorted array is");
        System.out.println(Arrays.toString(array));
    }
}

Program Explanation

1. The function libraryHeapSort(), a priority queue is created.
2. The loop for(i=0; i<array.length; i++), adds the enemy elements to the priority queue.
3. The loop while(!priorityQueue.isEmpty()) extracts the elements from priority queue one by one and then adds them to the queue.

Time Complexity: O(n*log(n)) where n is the number of elements in the array.

Runtime Test Cases

Case 1 (Simple Test Case):
 
Enter the size of the array
5
Enter array elements
9
8
7
6
5
The initial array is
[9, 8, 7, 6, 5]
The sorted array is
[5, 6, 7, 8, 9]
 
Case 2 (Simple Test Case - another example):
 
Enter the size of the array
8
Enter array elements
8
7
6
9
9
6
7
8
The initial array is
[8, 7, 6, 9, 9, 6, 7, 8]
The sorted array is
[6, 6, 7, 7, 8, 8, 9, 9]

Related posts:

Lập trình đa luồng với Callable và Future trong Java
Spring Boot Annotations
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Guide to Dynamic Tests in Junit 5
Spring REST API with Protocol Buffers
An Intro to Spring Cloud Vault
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Implement Nth Root Algorithm
Optional trong Java 8
Add Multiple Items to an Java ArrayList
How to Replace Many if Statements in Java
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Connect through a Proxy
Java Program to Check whether Directed Graph is Connected using DFS
The Order of Tests in JUnit
Guide to WeakHashMap in Java
Java Program to Implement Sorted List
Java Program to Evaluate an Expression using Stacks
Java Program to Describe the Representation of Graph using Incidence Matrix
Semaphore trong Java
Spring Boot - Batch Service
Calling Stored Procedures from Spring Data JPA Repositories
Dockerizing a Spring Boot Application
Introduction to Liquibase Rollback
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java Program to Generate All Possible Combinations Out of a, b, c, d, e
Quick Guide to Spring Controllers
Spring Boot - Application Properties
Hướng dẫn Java Design Pattern – Facade
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Java Program to Check Whether Topological Sorting can be Performed in a Graph
The Thread.join() Method in Java