From 79416aa255e2db5424551ecb1c8679ee19fcb638 Mon Sep 17 00:00:00 2001 From: Pagwin Date: Sun, 3 Nov 2024 04:24:17 -0500 Subject: [PATCH] using max_element instead of find and sorted list --- main.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/main.cpp b/main.cpp index b3eab66..e43729e 100644 --- a/main.cpp +++ b/main.cpp @@ -18,22 +18,16 @@ std::vector getReversalsToSort(const std::vector &arr); */ std::vector getReversalsToSort(const std::vector &arr) { - // there's a slightly more fancy version of this but who cares - // all we need is the elements sorted from least to greatest - // sorting to get info might be cheating but eeeeeh it wasn't specified - std::vector sorted = arr; - std::sort(sorted.begin(), sorted.end()); - std::vector intermediate = arr; std::vector ret = {}; // a bit more explicit than necessary but my brain thought it was useful info - std::size_t i = intermediate.size(); - for (auto elem = sorted.rbegin(); elem != sorted.rend(); elem++) { + ; + for (std::size_t i = intermediate.size(); i > 1; i--) { // only searching the unsorted elements auto found = - std::find(intermediate.cbegin(), intermediate.cbegin() + i, *elem); + std::max_element(intermediate.cbegin(), intermediate.cbegin() + i); std::size_t first_swap = found - intermediate.cbegin() + 1; std::size_t second_swap = i; @@ -49,7 +43,6 @@ std::vector getReversalsToSort(const std::vector &arr) { std::reverse(intermediate.begin(), intermediate.begin() + second_swap); } } - i--; } return ret;