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