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;