From 8ab4cd05e3195432d7e1df5839424313db0348d9 Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev Date: Sun, 28 May 2023 18:52:22 +0300 Subject: fix counting sort --- Seminar07/counting-sort.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'Seminar07/counting-sort.cpp') diff --git a/Seminar07/counting-sort.cpp b/Seminar07/counting-sort.cpp index a00f742..be662f2 100644 --- a/Seminar07/counting-sort.cpp +++ b/Seminar07/counting-sort.cpp @@ -3,16 +3,16 @@ #include #include -const int ELEMENTS_RANGE = 1000; +void countingSort(std::vector& v) { + unsigned elementRange = *std::max_element(v.begin(), v.end()) + 1; -void countingSort(std::vector& v) { - std::vector count(ELEMENTS_RANGE, 0); - std::vector result(v.size()); + std::vector count(elementRange, 0); + std::vector result(v.size()); for (size_t i = 0; i < v.size(); i++) count[v[i]]++; - for (size_t i = 1; i < ELEMENTS_RANGE; i++) + for (size_t i = 1; i < elementRange; i++) count[i] += count[i - 1]; for (int i = v.size() - 1; i >= 0; i--) { @@ -24,11 +24,11 @@ void countingSort(std::vector& v) { } int main() { - std::vector v; - const int length = 100000; + std::vector v; + const int length = 10000; for (size_t i = 0; i < length; i++) - v.push_back(rand() % ELEMENTS_RANGE); + v.push_back(rand() * rand()); countingSort(v); -- cgit v1.3.1-26-gb76a