I use std::upper_bound on a sorted vector, and it's clearly not working in logarithmic time, as I compare it with my own implementation of upper bound search. Why is it happening? My code:
for (size_t i = 1; i < sorted_vector.size(); ++i) {
size_t m = std::upper_bound(
sorted_vector.begin(),
sorted_vector.begin() + i,
values_to_search[i]);
Total time here supposed to be O(n * log(n)). When I use my own implementation of upper_bound on an array of size 50000 it takes about 0.05 seconds, while with std it's around 3 seconds.
Aucun commentaire:
Enregistrer un commentaire