Java Program to Implement Counting Sort

This is a Java Program to implement Counting Sort Algorithm. This program is to sort a list of numbers.
Here is the source code of the Java program to implement Counting Sort Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/**
 ** Java Program to Implement Counting Sort
 **/
 
import java.util.Scanner;
 
/** Class CountingSort **/
public class CountingSort 
{
    private static final int MAX_RANGE = 1000000;
    /** Counting Sort function **/
    public static void sort( int[] arr )
    {
        int N = arr.length;
        if (N == 0)
            return;
        /** find max and min values **/
        int max = arr[0], min = arr[0];
        for (int i = 1; i < N; i++)
        {
            if (arr[i] > max)
                max = arr[i];
            if (arr[i] < min)
                min = arr[i];
        }
        int range = max - min + 1;
 
        /** check if range is small enough for count array **/
        /** else it might give out of memory exception while allocating memory for array **/
        if (range > MAX_RANGE)
        {
            System.out.println("\nError : Range too large for sort");
            return;
        }
 
        int[] count = new int[range];
        /** make count/frequency array for each element **/
        for (int i = 0; i < N; i++)
            count[arr[i] - min]++;
        /** modify count so that positions in final array is obtained **/
        for (int i = 1; i < range; i++)
            count[i] += count[i - 1];
        /** modify original array **/
        int j = 0;
        for (int i = 0; i < range; i++)
            while (j < count[i])
                arr[j++] = i + min;
    }    
    /** Main method **/
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner( System.in );        
        System.out.println("Counting Sort Test\n");
        int n, i;
        /** Accept number of elements **/
        System.out.println("Enter number of integer elements");
        n = scan.nextInt();
        /** Create integer array on n elements **/
        int arr[] = new int[ n ];
        /** Accept elements **/
        System.out.println("\nEnter "+ n +" integer elements");
        for (i = 0; i < n; i++)
            arr[i] = scan.nextInt();
        /** Call method sort **/
        sort(arr);
        /** Print sorted Array **/
        System.out.println("\nElements after sorting ");        
        for (i = 0; i < n; i++)
            System.out.print(arr[i]+" ");            
        System.out.println();                     
    }    
}
Counting Sort Test
 
Enter number of integer elements
20
 
Enter 20 integer elements
54 67 13 24 76 37 97 10 67 24 6 28 5 19 63 1 71 83 97 24
 
Elements after sorting
1 5 6 10 13 19 24 24 24 28 37 54 63 67 67 71 76 83 97 97

Related posts:

Tính kế thừa (Inheritance) trong java
Java Program to Implement Sorted List
Life Cycle of a Thread in Java
Transaction Propagation and Isolation in Spring @Transactional
Java Program to Implement Bucket Sort
Query Entities by Dates and Times with Spring Data JPA
Java Program to Implement Segment Tree
Spring Boot - Quick Start
Java Program to Implement Min Hash
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Java Program to Implement Nth Root Algorithm
Spring Boot - Apache Kafka
Spring Boot - Sending Email
Java Program to Implement Leftist Heap
Java Program to Implement Queue
Java Program to Implement Stein GCD Algorithm
Java Program to Implement Find all Back Edges in a Graph
Hướng dẫn Java Design Pattern – Mediator
Apache Commons Collections SetUtils
Java Program to Implement the Edmond’s Algorithm for Maximum Cardinality Matching
Add Multiple Items to an Java ArrayList
Returning Image/Media Data with Spring MVC
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java Program to implement Array Deque
Java Program to Generate Random Numbers Using Middle Square Method
Java Program to Find the Shortest Path Between Two Vertices Using Dijkstra’s Algorithm
Understanding Memory Leaks in Java
Spring Boot - Google Cloud Platform
A Guide to @RepeatedTest in Junit 5
Java Program to Implement String Matching Using Vectors
Java Program to Solve the Fractional Knapsack Problem