From 4427a5801a98bfcc8a9e44eb215bbd2de40a3b6b Mon Sep 17 00:00:00 2001 From: Jatin kansal <43703274+jatinkansal2005@users.noreply.github.com> Date: Mon, 17 Oct 2022 17:29:57 +0530 Subject: [PATCH] Create counting_sort.cpp --- CPP/counting_sort.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CPP/counting_sort.cpp diff --git a/CPP/counting_sort.cpp b/CPP/counting_sort.cpp new file mode 100644 index 0000000..e0f8a84 --- /dev/null +++ b/CPP/counting_sort.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +using namespace std; + +void countSort(vector& arr) +{ + int max = *max_element(arr.begin(), arr.end()); + int min = *min_element(arr.begin(), arr.end()); + int range = max - min + 1; + + vector count(range), output(arr.size()); + for (int i = 0; i < arr.size(); i++) + count[arr[i] - min]++; + + for (int i = 1; i < count.size(); i++) + count[i] += count[i - 1]; + + for (int i = arr.size() - 1; i >= 0; i--) { + output[count[arr[i] - min] - 1] = arr[i]; + count[arr[i] - min]--; + } + + for (int i = 0; i < arr.size(); i++) + arr[i] = output[i]; +} + +void printArray(vector& arr) +{ + for (int i = 0; i < arr.size(); i++) + cout << arr[i] << " "; + cout << "\n"; +} + +int main() +{ + vector arr = { -5, -10, 0, -3, 8, 5, -1, 10 }; + countSort(arr); + printArray(arr); + return 0; +}