54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
#include <cstdio>
|
|
#include <memory>
|
|
|
|
#include <random>
|
|
#include <vector>
|
|
|
|
#include "sort/sort.hpp"
|
|
|
|
template <typename Iter>
|
|
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<int> 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;
|
|
}
|