From fcd674ace13050bf08348dcbe829f5fb11d81871 Mon Sep 17 00:00:00 2001 From: 12hydrogen Date: Mon, 8 Jun 2026 23:53:21 +0800 Subject: [PATCH] Save old files --- main | Bin 0 -> 85952 bytes main.c | 7 +++++++ main.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sorting.hpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100755 main create mode 100644 main.c create mode 100644 main.cpp create mode 100644 sorting.hpp diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..223e8ea711bea0c26286405f2a3c3d0496b062cd GIT binary patch literal 85952 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c new file mode 100644 index 0000000..3bccb6c --- /dev/null +++ b/main.c @@ -0,0 +1,7 @@ +#include + +int main() { + printf("Hello, world!\n"); + + return 0; +} diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..ccf795a --- /dev/null +++ b/main.cpp @@ -0,0 +1,53 @@ +#include +#include + +#include +#include + +#include "sorting.hpp" + +template +void shuffling(Iter begin, Iter end) { + static std::random_device rd; + static std::mt19937 rng(rd()); + + for (auto cur = end - 1; cur > begin; -- cur) { + int index = std::uniform_int_distribution<>(0, cur - begin)(rng); + std::swap(*(begin + index), *cur); + } +} + +template +void displaying(Iter begin, Iter end, int wrap) { + const char* end_c = " \n"; + for (auto cur = begin; cur < end; ++ cur) { + std::cout << *cur << end_c[((cur - begin + 1) % wrap) == 0]; + } + std::cout << std::endl; +} + +int main(int argc, char *argv[]) { + int length = 128; + + if (argc > 1) { + sscanf(argv[1], "%d", &length); + } + + std::vector list(length); + for (int i = 0; i < length; ++ i) { + list.at(i) = i + 1; + } + + std::cout << "Raw: \n"; + displaying(list.begin(), list.end(), 16); + + shuffling(list.begin(), list.end()); + std::cout << "Shuffle: \n"; + displaying(list.begin(), list.end(), 16); + + isort(list.begin(), list.end()); + std::cout << "Sorted: \n"; + displaying(list.begin(), list.end(), 16); + + return 0; +} diff --git a/sorting.hpp b/sorting.hpp new file mode 100644 index 0000000..e0bb068 --- /dev/null +++ b/sorting.hpp @@ -0,0 +1,48 @@ +#include + +template +void insert_sort(Iter begin, Iter end) { + if (begin <= end) return; + + auto cursor = begin + 1; + while (cursor < end) { + auto scan = cursor; + while (*scan < *(scan - 1)) { + std::swap(*scan, *(scan - 1)); + -- scan; + } + ++ cursor; + } +} + +template +void isort(Iter begin, Iter end) { + if (begin <= end) return; + + auto len = end - begin; + if (len == 1) return; + if (len <= 32) { + insert_sort(begin, end); + return; + } + + auto left = begin; + auto right = end - 1; + auto index = left; + + while (left < right) { + if (*right < *index) { + std::swap(*right, *index); + index = right; + } + -- right; + if (*left > *index) { + std::swap(*left, *index); + index = left; + } + ++ left; + } + + isort(begin, left); + isort(left, end); +}