From e732d062b6efc6bf5d6ffccab3b4261ae34eaf57 Mon Sep 17 00:00:00 2001 From: robtor Date: Tue, 5 Dec 2023 10:53:51 +0100 Subject: [PATCH] Remove unnecessary copy --- task2/include/quicksort_mt.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/task2/include/quicksort_mt.h b/task2/include/quicksort_mt.h index 6d57e78..506f654 100644 --- a/task2/include/quicksort_mt.h +++ b/task2/include/quicksort_mt.h @@ -20,13 +20,11 @@ public: private: auto parition(std::span &data) -> std::pair, std::span> { - std::vector buf(data); + auto pivot = data.begin(); + std::advance(pivot, std::distance(data.begin(), data.end()) / 2); - auto pivot = buf.begin(); - std::advance(pivot, std::distance(buf.begin(), buf.end()) / 2); - - auto lefti = buf.begin(); - auto righti = buf.end(); + auto lefti = data.begin(); + auto righti = data.end(); while (1) { for (; cmp(*lefti, *pivot); lefti++); @@ -39,7 +37,6 @@ private: std::swap(lefti, righti); } - std::move(buf.begin(), buf.end(), data.begin()); return {std::span(data.begin(), lefti), std::span(lefti, data.end())}; }