(留坑)小灰的算法之旅 读书笔记(三) 数据结构

本文详细讨论了数组在随机读取、更新、插入和删除操作中的时间复杂度,强调了数组在读操作方面的高效性以及在插入和删除时的局限性,同时提到了链表、栈、队列、哈希表等其他数据结构及其适用场景,还涵盖了排序算法如冒泡排序、快速排序和堆排序等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组
1.读取元素  使用下标直接读取 (通过下标读取元素的方式叫做随机读取)
2.更新元素  使用下标直接赋值
二者的时间复杂度都是O(1)
3.插入元素
  尾部插入  等同于更新元素
  中间插入  从后向前遍历,将后面的元素依次向后移动,再向目标位置插入更新
  超范围插入  由于数组定长,需要重新创建一个数组,将原数组平移过来,再进行插入操作
  对于插入操作而言,数组扩容的时间复杂度是O(n),插入并移动元素的时间复杂度也是O(n),所以综合起来的时间复杂度是O(n)
4.删除元素
  从删除位的后面一位开始,向数组末端循环,依次将元素前移
  删除操作只涉及元素的移动,时间复杂度也是O(n)
  对删除操作而言,当数组元素没有顺序要求时,可以取巧,将删除目标位置的元素与最后一位调换,再移除最后一位元素,此时时间复杂度是O(1)。本方法只做参考,并不是删除元素时主流的操作方式。

数组具有非常高效的随机访问能力,只要给出下标,就可以用常量时间找到对应元素。
有一种高效查找元素的算法叫作二分查找,就是利用了数组的这个优势。
数组的劣势体现在插入和删除方面,由于数组元素连续紧密地存储在内存中,插入、删除元素都会导致大量元素被迫移动,影响效率。

总的来说,数组适合“读操作多,写操作少”的场景
 

==留坑
链表
物理结构-逻辑结构
栈和队列
散列表-哈希表-字典
---

二叉树
满二叉树
完全二叉树   指的是结点位置,而非存在结点位置上的值
二叉查找树(二叉排序树)
深度优先遍历(前中后序) (递归实现、栈实现)
广度优先遍历  (层序)      (队列实现)
二叉堆(本质上是完全二叉树,又细分为最大堆和最小堆)(优先队列)
==
排序算法
时间复杂度为O(n^2)的:冒泡,选择,插入
介于O(n^2)和O(nlogn)之间的: 希尔排序
O(nlogn)的:快速排序,归并排序,堆排序
时间复杂度为线性的排序:计数排序,桶排序,基数排序
本书仅讲述:冒泡排序,快速排序,堆排序,计数排序,桶排序
冒泡排序
快速排序(分治法)
==
面试算法
判断链表有环
最小栈的实现
最大公约数
如何判断一个数是否为2的整数次幂
无序数组排序后的最大相邻差
用栈来实现队列(均摊时间复杂度)
寻找全排列的下一个数
删去k个数字后的最小值(贪心算法,栈优化)
如何实现大整数相加(计数排序,栈优化)
金矿问题(动态规划)
寻找缺失整数(求和做差、异或运算)
Bitmap
LRU 最近最少使用
A星寻路算法
红包分发

 

师介绍:程序员小灰前京东研发工程师畅销书《漫画算法》作者全网60万程序员粉丝 课程亮点:程序员小灰亲自授课,系统算法数据结构知识视频课程由浅入深,搭配上细致生动的技术示意图,让你轻松学会算法赠送算法学习交流社群,众多程序员同行共同交流学习如对课程不满意,天内可以无条件退款,0风险学习添加小助手,免费领取「算法学习路径知识图谱」↓↓↓ 适用人群:计算机专业的在校学生在职场想要提升算法能力的程序员想要通过大厂算法面试的求职者  课程大纲:Part1:基本概念01.什么是算法02.什么是数据结构03.什么是时间复杂度04.什么是空间复杂度? Part2:线性数据结构05.什么是数组06.什么是链表07.栈和队列08.什么是哈希表 Part3:树和二叉树09.树的基本概念10.二叉树的遍历11.什么是二叉查找树12.什么是红黑树 Part4:图结构13.图的基本概念14.图的遍历 Part5:排序算法15.冒泡排序16.插入排序17.快速排序18.归并排序19.计数排序20.希尔排序 Part6:查找算法21.什么是二分查找算法22.什么是跳表 Part7:贪心算法和动态规划23.什么是贪心算法24.什么是动态规划 Part8:面试中的算法25.两数之和数之和26.判断链表是否有环27.实现大整数相加28.最小栈的实现29.寻找缺失的整数30.寻找两个正序数组的中位数31.二维数组螺旋输出32.删除链表的倒数第n个节点33.用前序中序遍历构造二叉树34.寻找字符串的最长有效括号35.寻找最长公共子序列36.求解N皇后问题 课程形式:30节视频课+社群答疑可无限回放,永久有效
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值