diff --git a/homework/length-sort/sort.cpp b/homework/length-sort/sort.cpp new file mode 100644 index 000000000..9a1ab3a90 --- /dev/null +++ b/homework/length-sort/sort.cpp @@ -0,0 +1,32 @@ +#include "sort.hpp" + +std::deque lengthSort(std::forward_list& words) { + std::deque sorted; + for (auto& word : words) { + if (sorted.empty()) { + sorted.push_back(word); + continue; + } + for (auto it = sorted.begin(); it != sorted.end();) { + std::string& s = *it; + + if (word.length() < s.length()) { + sorted.insert(it, word); + break; + } else if (word.length() == s.length()) { + if (word <= s) { + sorted.insert(it, word); + break; + } + } + ++it; + + if (it == sorted.end()) { + sorted.push_back(word); + break; + } + } + } + + return sorted; +} \ No newline at end of file diff --git a/homework/length-sort/sort.hpp b/homework/length-sort/sort.hpp new file mode 100644 index 000000000..b7e9af45e --- /dev/null +++ b/homework/length-sort/sort.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include +#include +#include + +std::deque lengthSort(std::forward_list& words); \ No newline at end of file