map vector 插入时间复杂度
来源:互联网 发布:不安全网络怎么解决 编辑:程序博客网 时间:2024/05/24 15:39
问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。
简单分析如下:
考虑vector每次内存扩充两倍的情况。
如果我们插入N个元素, 则会引发lgN次的内存扩充,而每次扩充引起的元素拷贝次数为
2^0, 2^1, 2^2, ..., 2^lgN.
把所有的拷贝次数相加得到
2^0 + 2^1 + 2^2 + ... + 2^lgN = 2 * 2^lgN - 1 约为 2N次
共拷贝了N次最后一个元素, 所以总的操作大概为3N
所以, 每个push_back操作分摊3次, 是O(1) 的复杂度。
map insert
复杂度
如果插入单个元素且无暗示,时间复杂度为 O(logn),其中 n 为容器的大小。
如果插入单个元素且有最优位置(Position)暗示,时间复杂度为 O(1),这是一个平均分摊后的常值(Amortized constant)。
如果插入多个元素,时间复杂度为 O(nlogn),“第一个” n 为插入元素数,“第二个” n 为插入元素数加容器大小。如果插入的范围中的元素已经按同样的排序规则排序,执行过程将被优化,时间复杂度甚至会降到O(n)。
迭代器有效性
不会改变。
0 0
- map vector 插入时间复杂度
- list vector 时间复杂度
- c++中stl vector的时间复杂度
- 插入排序的时间复杂度而
- 插入排序的时间复杂度分析
- 单链表插入删除元素时间复杂度探究
- 插入排序和时间复杂度下界
- map 有log n 的时间复杂度 map 有log n 的时间复杂度 map 有log n 的时间复杂度 map 有log n 的时间复杂度 map 有log n 的时间复杂度 map
- 直接插入排序算法。(时间复杂度n*n)
- 7. 二叉排序树的搜索、插入、删除,时间复杂度
- 插入排序算法的java实现及时间复杂度分析
- 红黑树的插入和遍历时间复杂度分析
- 插入排序和归并排序实现以及时间复杂度分析
- 8大排序之-----(一)插入排序与时间复杂度
- 浅谈直接插入排序算法思想以及时间复杂度分析
- 常见数据结构的查找、插入、删除时间复杂度
- 算法 插入排序 的 JS实现及时间复杂度分析
- vector/list/map/set的插入、删除、遍历
- 关联函数的位置 自我总结
- 飞机票
- ASP.NET 简易多选模式【解决分页时候第一页选的值翻页之后丢失问题】
- 场景提示Step download timeout(120 seconds)
- ecshop二次开发--放大镜2
- map vector 插入时间复杂度
- 阿里云CentOS安装typecho
- Expression: _pFirstBlock==pHead
- 游戏中的网络同步机制——Lockstep
- Android之多线程 Handler 详解
- Python
- 去掉ExpandableListView的箭头图标
- Gson解析 解析包含有data字段的json数据
- 关联函数的位置