繁体   English   中英

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

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

list<Person> lp;
...
lp.sort(PersonNameLess());

Person newPerson;
...
lp.insert(upper_bound(lp.begin(), lp.end(), 
          newPerson, PersonNameLess()), newPerson);

在有效的c ++ 3rd Edition,第198页,项目45中,其内容如下:

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

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

为什么只执行对数比较?

由于列表已排序,并且upper_bound会执行二进制搜索

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM