数据结构笔记1 绪论,线性表

学习视频:

第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)。
 

  • 33
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值