Adding a simple c-style solution

master
denes 5 years ago
parent a3750858c9
commit 8ee57e83e2
Signed by: denes
GPG Key ID: A7D50EAD42F9FC9F

@ -18,6 +18,7 @@ std::vector<int> generate_random_numbers(int n, int min, int max)
TEST_CASE( "Simple test" ) { TEST_CASE( "Simple test" ) {
std::vector<int> v = { 1, 2, 3, 1}; std::vector<int> v = { 1, 2, 3, 1};
REQUIRE( performance_measuring::count_on_the_way(v) == 2 );
REQUIRE( performance_measuring::min_element_and_count(v) == 2 ); REQUIRE( performance_measuring::min_element_and_count(v) == 2 );
REQUIRE( performance_measuring::sort_and_upper_bound(v) == 2 ); REQUIRE( performance_measuring::sort_and_upper_bound(v) == 2 );
} }
@ -27,6 +28,9 @@ TEST_CASE("Benchmarking") {
std::vector<int> v = generate_random_numbers(10000, 0, 1000); std::vector<int> v = generate_random_numbers(10000, 0, 1000);
BENCHMARK("count_on_the_way 10k") {
return performance_measuring::count_on_the_way(v);
};
BENCHMARK("min_element_and_count 10k") { BENCHMARK("min_element_and_count 10k") {
return performance_measuring::min_element_and_count(v); return performance_measuring::min_element_and_count(v);
}; };

@ -6,6 +6,23 @@
namespace performance_measuring { namespace performance_measuring {
int count_on_the_way(const std::vector<int>& v)
{
int min = v[0];
int c = 1;
for (int i = 1; i < v.size(); ++i) {
if (v[i] > min) {
continue;
} if (v[i] == min) {
++c;
} else {
min = v[i];
c = 1;
}
}
return c;
}
int min_element_and_count(const std::vector<int>& v) int min_element_and_count(const std::vector<int>& v)
{ {
int min = *std::min_element(v.begin(), v.end()); int min = *std::min_element(v.begin(), v.end());

Loading…
Cancel
Save