1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include "sortutils.hpp"
#include <algorithm>
#include <cmath>
#include <iostream>
const int MIN_DIST = static_cast<int>(-1e+7);
const int MAX_DIST = static_cast<int>(1e+7);
/**
* @param SourceArray source: the data to initialize with random elements
* @return void: set source's elements between MIN_DIST, MAX_DIST
*/
void randomizeArray(SourceArray& source)
{
std::uniform_int_distribution<int> distribution(MIN_DIST, MAX_DIST);
std::default_random_engine generator;
std::generate(std::execution::par, source.begin(), source.end(), [&distribution, &generator]() { return distribution(generator); });
}
int main()
{
SourceArray randomizedArray, sorted, reversed, organPipe, rotated;
randomizeArray(randomizedArray);
std::copy(randomizedArray.begin(), randomizedArray.end(), sorted.begin());
std::sort(sorted.begin(), sorted.end());
std::copy(sorted.begin(), sorted.end(), reversed.begin());
std::reverse(reversed.begin(), reversed.end());
std::copy(sorted.begin(), sorted.end(), organPipe.begin());
organPipeStdArray(organPipe);
std::copy(sorted.begin(), sorted.end(), rotated.begin());
std::rotate(rotated.begin(), rotated.begin() + 1, rotated.end());
evaluateRawArray(randomizedArray, sorted, reversed, organPipe, rotated);
evaluateStdArray(randomizedArray, sorted, reversed, organPipe, rotated);
evaluateStdVector(randomizedArray, sorted, reversed, organPipe, rotated);
return 0;
}
|