diff --git a/BaseLib/quicksort.h b/BaseLib/quicksort.h index 75cbf4e51d6064882fba2ae023daddce5443b959..57a3aaa1b04cbe92ea0e882e06e7a83c70bbafac 100644 --- a/BaseLib/quicksort.h +++ b/BaseLib/quicksort.h @@ -23,29 +23,7 @@ namespace BaseLib template <typename T1, typename T2 = std::size_t> void quicksort(std::vector<T1>& array, std::size_t beg, std::size_t end, std::vector<T2>& perm) { - // Zip input arrays. - std::vector<std::pair<T1, T2>> data; - 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) - { - return std::make_pair(t1, t2); - }); - - // Sort data using first element of the pair. - std::sort(data.begin(), data.end(), - [](std::pair<T1, T2> const& a, std::pair<T1, T2> const& b) - { - return (a.first < b.first); - }); - - // Unzip sorted data. - for (std::size_t i = beg; i < end; i++) - { - array[i] = data[i-beg].first; - perm[i] = data[i-beg].second; - } + quicksort(array.data(), beg, end, perm.data()); } template <typename T1, typename T2 = std::size_t>