From 6cc30d6564a9c3f573393d4a819c6e9ef0e1d81a Mon Sep 17 00:00:00 2001 From: Saket Kumar <37291252+saket1999@users.noreply.github.com> Date: Thu, 21 Oct 2021 20:29:57 +0530 Subject: [PATCH] Created countSort.cpp --- CPP/countSort.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 CPP/countSort.cpp diff --git a/CPP/countSort.cpp b/CPP/countSort.cpp new file mode 100644 index 0000000..56e977c --- /dev/null +++ b/CPP/countSort.cpp @@ -0,0 +1,49 @@ +#include +#include +using namespace std; +void display(int *array, int size) { + for(int i = 1; i<=size; i++) + cout << array[i] << " "; + cout << endl; +} +int getMax(int array[], int size) { + int max = array[1]; + for(int i = 2; i<=size; i++) { + if(array[i] > max) + max = array[i]; + } + return max; //the max element from the array +} +void countSort(int *array, int size) { + int output[size+1]; + int max = getMax(array, size); + int count[max+1]; //create count array (max+1 number of elements) + for(int i = 0; i<=max; i++) + count[i] = 0; //initialize count array to all zero + for(int i = 1; i <=size; i++) + count[array[i]]++; //increase number count in count array. + for(int i = 1; i<=max; i++) + count[i] += count[i-1]; //find cumulative frequency + for(int i = size; i>=1; i--) { + output[count[array[i]]] = array[i]; + count[array[i]] -= 1; //decrease count for same numbers + } + for(int i = 1; i<=size; i++) { + array[i] = output[i]; //store output array to main array + } +} +int main() { + int n; + cout << "Enter the number of elements: "; + cin >> n; + int arr[n+1]; //create an array with given number of elements + cout << "Enter elements:" << endl; + for(int i = 1; i<=n; i++) { + cin >> arr[i]; + } + cout << "Array before Sorting: "; + display(arr, n); + countSort(arr, n); + cout << "Array after Sorting: "; + display(arr, n); +}