From 7c30f5c9959a4db9b22f246384331b67590e9046 Mon Sep 17 00:00:00 2001 From: Tamilselvi <85762097+tamilselvi53@users.noreply.github.com> Date: Fri, 28 Oct 2022 10:22:58 +0530 Subject: [PATCH] added counting sort --- Sorting Algorithms/CountingSort.java | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Sorting Algorithms/CountingSort.java diff --git a/Sorting Algorithms/CountingSort.java b/Sorting Algorithms/CountingSort.java new file mode 100644 index 0000000..9eae6e9 --- /dev/null +++ b/Sorting Algorithms/CountingSort.java @@ -0,0 +1,30 @@ +//T(n): O(n* range) approx O(n) +//S(n): O(n * r) +public class Main +{ + public static int[] CountSort(int[] arr, int n) { + int[] freq = new int[10]; + //Freuency of numbers + for (int i = 0; i < n; i++) { + freq[arr[i]]++; + } + //Cumulative frequency + for (int i = 1; i < 10; i++) { + freq[i] += freq[i - 1]; + } + //Storing elements in result array maintaining order + int[] res = new int[n]; + for (int i = n - 1; i >= 0; i--) { + int index = --freq[arr[i]]; + res[index] = arr[i]; + } + return res; + } + public static void main(String[] args) { + int[] arr = {9, 8, 7, 5, 2, 1}; + int[] res = CountSort(arr, 6); + for (int i: res) { + System.out.print(i +" "); + } + } +} \ No newline at end of file