#include<iostream> #include <vector> #include<climits> /* * Part of Cosmos by OpenGenus Foundation */ using namespace std; void countingSort(vector<int> arr,vector<int>& sortedA){ int m=INT_MIN; for(int i=0;i<arr.size();i++){ if(arr[i]>m){ m=arr[i]; } } int freq[m+1]; //m is the maximum number in the array for(int i=0;i<=m;i++) freq[i]=0; for(int i=0;i<arr.size();i++) freq[arr[i]]++; int j = 0; for(int i=0;i<=m;i++){ int tmp=freq[i]; while(tmp--){ sortedA[j] = i; j++; } } } int main(){ vector<int> arr{1,4,12,34,16,11,9,1,3,33,5}; vector<int> sortedA(arr.size()+1); // stores sorted array countingSort(arr,sortedA); cout<<"Sorted Array: "; for(int i=0;i<arr.size();i++) cout<<sortedA[i]<<" "; return 0; }