学习视频:
第01周c--1.2基本概念和术语1_哔哩哔哩_bilibili
01《数据结构》绪论_哔哩哔哩_bilibili
数据:
1.数值型的数据:整数,实数
2.非数值型的数据:文字、图像..
数据元素:(元素,记录,结点,顶点)
数据项:构成数据元素的不可分割的最小单位
数据对象:性质相同的数据元素的集合,是数据的一个子集
不能只说是一个值的集合
空间复杂度:取次数最高那项,且不取其系数
线性表可以为空表
线性表的顺序实现:
1.线性表中的位序是从1开始的,而数组中元素的下标是从0开始的
2.按位置访问:随机存取,通过首地址和元素序号在0(1)时间内找到指定的元素
3.按值查找,时间复杂度是o(n),因为需要遍历
线性表的链式实现:
1.存储是非顺序
其实可以认为,什么的指针指向什么
而像这种,就是取值
删除操作:
不管怎么说,respect
12.12_黑马数据结构与算法笔记Java_黑马程序员数据结构-CSDN博客
最好数出来
为什么创建一个包括n个结点的有序单链表的时间复杂度是o(n的平方)
创建一个包括n个节点的有序单链表的时间复杂度为O(n^2)的原因主要在于插入操作的复杂性。当构建有序链表时,每次插入新节点都需要保持链表的有序性,这意味着每个新节点都需要找到其在链表中的正确位置然后插入。随着链表的增长,后续节点的插入操作将越来越耗时,因为每次插入前都需要遍历已经排序的部分链表来确定插入位置。具体分析如下:
1. **初始情况**:插入第一个节点时,时间复杂度为O(1),因为链表为空,无需比较。
2. **插入第二个节点**:需要与第一个节点比较一次,时间复杂度O(1)。
3. **插入第i个节点**:需要与前面i-1个已排序的节点逐一比较,以找到合适的位置插入,这一过程的时间复杂度为O(i)。
4. **总时间复杂度**:随着i从1增长到n,每次插入的平均比较次数呈线性增长,因此总的比较次数为1+2+3+...+(n-1) = n*(n-1)/2,这是一个关于n的二次函数,其时间复杂度为O(n^2)。
简而言之,每次插入操作的比较次数随链表长度线性增加,导致整体的时间复杂度上升到二次级别。如果使用更高效的插入方法,如二分查找后再插入(但这要求链表支持随机访问,而单链表通常不便于直接实现这一点),则可能降低这个时间复杂度,但在基本的单链表结构和操作下,创建有序单链表的时间复杂度确实是O(n^2)。