From b94a3e12b1d1aeadcc1218d255faebda1ed314b6 Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Tue, 8 Sep 2015 10:46:27 +0200 Subject: [PATCH] [BL] quicksort sorts an part [beg, end) of the array. --- BaseLib/quicksort.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/BaseLib/quicksort.h b/BaseLib/quicksort.h index 3cfa15a36d9..f2ec2cd2a43 100644 --- a/BaseLib/quicksort.h +++ b/BaseLib/quicksort.h @@ -25,8 +25,8 @@ void quicksort(std::vector<T1>& array, std::size_t beg, std::size_t end, std::ve { // Zip input arrays. std::vector<std::pair<T1, T2>> data; - data.reserve(array.size()); - std::transform(array.begin(), array.end(), perm.begin(), + data.reserve(end-beg); + std::transform(array.begin()+beg, array.begin()+end, perm.begin()+beg, std::back_inserter(data), [](T1 const& t1, T2 const& t2) { @@ -41,10 +41,10 @@ void quicksort(std::vector<T1>& array, std::size_t beg, std::size_t end, std::ve }); // Unzip sorted data. - for (std::size_t i = 0; i < data.size(); i++) + for (std::size_t i = beg; i < end; i++) { - array[i] = data[i].first; - perm[i] = data[i].second; + array[i] = data[i-beg].first; + perm[i] = data[i-beg].second; } } @@ -53,8 +53,8 @@ void quicksort(std::vector<T1*>& array, std::size_t beg, std::size_t end, std::v { // Zip input arrays. std::vector<std::pair<T1*, T2>> data; - data.reserve(array.size()); - std::transform(array.begin(), array.end(), perm.begin(), + data.reserve(end-beg); + std::transform(array.begin()+beg, array.begin()+(end-beg), perm.begin()+beg, std::back_inserter(data), [](T1* const& t1, T2 const& t2) { @@ -71,8 +71,8 @@ void quicksort(std::vector<T1*>& array, std::size_t beg, std::size_t end, std::v // Unzip sorted data. for (std::size_t i = 0; i < data.size(); i++) { - array[i] = data[i].first; - perm[i] = data[i].second; + array[beg+i] = data[i].first; + perm[beg+i] = data[i].second; } } @@ -82,7 +82,7 @@ void quicksort(T1* & array, std::size_t beg, std::size_t end, T2* & perm) // Zip input arrays. std::vector<std::pair<T1, T2>> data; data.reserve(end-beg); - std::transform(array+beg, array+(end-beg), perm+beg, + std::transform(array+beg, array+end, perm+beg, std::back_inserter(data), [](T1 const& t1, T2 const& t2) { -- GitLab