O(N) 查找,但在排序列表上使用 upper_bound 时进行 O(log(N)) 比较

O(N) lookups but O(log(N)) comparisons when using upper_bound on a sorted list

本文关键字:bound log 比较 upper 查找 排序 列表      更新时间:2023-10-16
list<Person> lp;
...
lp.sort(PersonNameLess());
Person newPerson;
...
lp.insert(upper_bound(lp.begin(), lp.end(), 
          newPerson, PersonNameLess()), newPerson);

在有效的 c++ 第 3 版第 198 页第 45 项中,它说:

查找需要线性时间,但它只执行对数 比较次数

问题:为什么它只执行对数比较?

为什么它只执行

对数比较?

因为列表已排序,upper_bound执行二叉搜索。