Search
 
SCRIPT & CODE EXAMPLE
 

JAVA

How to perform counting sort in Java?

import java.util.Arrays;

public class CountingSort {
	/*
	 * This code performs a Counting sort of
	 * a list of positive integer values.
	 * 
	 * Let n be size of the list to be sorted and
	 * m be the maximum value in the list
	 * 
	 * Time complexity: O(n)
	 * Space complexity: O(n+m)
	 * 
	 */
	public static void main(String[] args) {
		int[] arr = { 2, 4, 3, 1 };

		System.out.println(Arrays.toString(arr)); // [2, 4, 3, 1]
		int[] sortedArr = countingSort(arr);
		System.out.println(Arrays.toString(sortedArr)); // [1, 2, 3, 4]
	}
	private static int[] countingSort(int[] arr) {
		/*
		 * The counting sort method counts the number
		 * of occurrences of every element in arr.
		 * Then uses that information to sort these elements.
		 */
		int max = findMax(arr);
		if (max == Integer.MIN_VALUE) {
			return new int[] {};
		}
		int[] counts = new int[max + 1];
		for (int num : arr) {
			counts[num]++;
		}
		for (int idx = 1; idx < counts.length; idx++) {
			counts[idx] = counts[idx - 1] + counts[idx];
		}
		int[] sortedArray = new int[arr.length];
		int current, sortedIdx;
		for (int idx = arr.length - 1; idx >= 0; idx--) {
			current = arr[idx];
			counts[current]--;
			sortedIdx = counts[current];
			sortedArray[sortedIdx] = current;
		}
		return sortedArray;
	}
	private static int findMax(int[] arr) {
		int max = Integer.MIN_VALUE;
		for (int num : arr) {
			if (num > max) {
				max = num;
			}
		}
		return max;
		// or return Collections.max(Arrays.asList(arr));
	}
}
Comment

counting sort java

public static void CountingSort(int A[], int k) {//k is equal to A.length
        int[] B = new int[k + 1];
        int max = A[0];
        for (int i = 1; i < k; i++) {
            if (A[i] > max)
                max = A[i];
        }
        int[] C = new int[max + 1];
        for (int i = 0; i < max; ++i) {
            C[i] = 0;
        }
        for (int i = 0; i < k; i++) {
            C[A[i]]++;
        }
        for (int i = 1; i <= max; i++) {
            C[i] += C[i - 1];
        }
        for (int i = k - 1; i >= 0; i--) {
            B[C[A[i]] - 1] = A[i];
            C[A[i]]--;
        }
        for (int i = 0; i < k; i++) {
            A[i] = B[i];
        }
    }
Comment

PREVIOUS NEXT
Code Example
Java :: java save file 
Java :: get text from edittext android 
Java :: java import joptionpane 
Java :: loop through a 2d array java 
Java :: Service vs Intent Service 
Java :: change color of action bar android studio 
Java :: java get size of matrix 
Java :: how to print array 
Java :: create a toast message in android 
Java :: java 8 filter first 
Java :: how to set list data to android spinner 
Java :: android vibrate device 
Java :: how to convert int to integer in java 
Java :: java rock paper scissors 
Java :: android change checkbox color 
Java :: android push notification icon 
Java :: How to perform breadth first search through a binary tree, in Java? 
Java :: print the list in java 
Java :: java map not null 
Java :: java do something after x seconds without stopping everything else 
Java :: android date time 
Java :: change button text onclick javca 
Java :: java example 
Java :: fill an array with random numbers between 1 and 100 java 
Java :: count vowels in java 
Java :: static int java 
Java :: how to get int from string java 
Java :: how to overwrite a text file in java 
Java :: how to add 2 numbers in java 
Java :: java replace character in string 
ADD CONTENT
Topic
Content
Source link
Name
6+3 =