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())}; }