#include #include #include #include #include "sort/sort.hpp" template void shuffling(Iter first, Iter last) { static std::random_device rd; static std::mt19937_64 mt_rd(rd()); size_t length = last - first; for (int i = length - 1; i > 0; --i) { int index = std::uniform_int_distribution(0, i)(mt_rd); std::swap(*(first + index), *(last - 1)); --last; } } int main(int argc, char* argv[]) { int list_size = 256; if (argc > 1) { sscanf(argv[1], "%d", &list_size); } std::vector list(list_size); for (int i = 0; i < list_size; ++i) { list.at(i) = i + 1; } shuffling(list.begin(), list.end()); printf("Pre-sorting:\n"); const char* endline = " \n"; int max_len = snprintf(nullptr, 0, "%d", list_size); for (int i = 0; i < list_size; ++i) { printf("%*d%c", max_len, list.at(i), endline[(i + 1) % 16 == 0]); } isort(list.begin(), list.end()); printf("\nPost-sorting:\n"); for (int i = 0; i < list_size; ++i) { printf("%*d%c", max_len, list.at(i), endline[(i + 1) % 16 == 0]); } return 0; }