链式存储中在第i个位置插入或删除的时间复杂度
来源:互联网 发布:java字符串包含字符串 编辑:程序博客网 时间:2024/06/05 08:49
计算机的数据存储(物理结构)中有两种基本的方式:顺序存储和链式存储。顺序存储指的是用一段地址连续的存储单元依次存储数据;而链式存储中数据元素可以散乱的存储到存储单元中,每一个数据元素中包含数据项和下一个元素的存储地址。
通过二者的定义不难看出,顺序存储在查找时的时间复杂度为O(1),因为它的地址是连续的,只要知道首元素的地址,根据下标可以很快找到指定位置的元素,而对与插入和删除操作由于可能要在插入前或删除后对元素进行移动,所以顺序存储的时间复杂度为O(n)。链式存储的特性则正好相反,在查找时需要从头元素逐个寻找,因此查找的时间复杂度为O(n),而对于插入和删除操作,由于只需要变更数据元素中下一元素的存储地址即可,因此时间复杂度为O(1)。
表面上看上面的说法没有什么问题,但其实在日常的使用中,比如要在数据集合的第i个位置插入或删除一个元素,要完成这样一个动作,使用顺序存储需要查找到元素然后执行插入或删除,时间复杂度为O(1)+O(n)=O(n);而链式存储同样需要先查找到元素然后在插入或删除,时间复杂度为O(n)+O(1)=O(n)。
所以说链式存储插入和删除的时间复杂度为O(1)的前提应该是已知元素当前的位置,否则实现在第i个位置插入或删除一个元素,顺序存储和链式存储的时间复杂度是一样的,都是O(n).
0 0
- 链式存储中在第i个位置插入或删除的时间复杂度
- 单链表--在第i个位置前插入元素e
- 在单链表的第i个位置插入一个新结点
- 删除单链表的第i个位置的结点
- 顺序表中在第i个数据元素位置上插入一个数据元素(修改)
- Django 使用 MySQL 存储时间中遇到的问题(在数据库中记录插入时间、更新时间、删除时间)
- 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
- n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|<=K,请设计一种排序算法,对该序列进行排序。注:算法时间复杂度为O(nlgn)的得0分,复杂度为O(nk) 的得两分,总分是20分
- 访问单向链表和顺序数组第i个元素的时间复杂度的分析
- 求第i个小的元素 时间复杂度O(n)
- 线性表的链式存储的插入与删除操作
- python_lintcode_372在O(1)时间复杂度删除链表节点_174删除链表中倒数第n个节点
- 链表(8)----删除链表的第K个节点,时间复杂度为O(1)
- 在UITableView中动态的插入或删除行
- 7. 二叉排序树的搜索、插入、删除,时间复杂度
- 常见数据结构的查找、插入、删除时间复杂度
- 指定长度的单链表,删除和插入第i个结点
- 单链表插入删除元素时间复杂度探究
- 【CSRMesh蓝牙开发】CSR开发--MeshService.class使用
- 找到字符数组中的最大字符
- leetcode_137. Single Number II 只出现一次的数字 II 偏离了题目考点,主要是为了写下java
- Android MediaProjection截屏与录屏(surfaceview截图)
- linux ./configure 选项参数
- 链式存储中在第i个位置插入或删除的时间复杂度
- Android OpenGL 坐标系 <2>
- SDUTOJ. LCS问题.(DP)
- 数据挖掘概念与技术——读书笔记(7)
- javascript定时器+DOM查看视口以及元素尺寸和位置
- SMO优化算法
- MySQL5.7 多线程复制,配置和测试结果
- 自定义EditText清除
- 编译器的工作过程