北大陈斌Python算法笔记(一)

简介: 北大陈斌Python算法笔记(一)

前言


🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。


线性结构


线性结构是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继


除了第一个没有前驱,最后一个没有后继


新的数据项加入到数据集中时,只会加入到原有某个数据项之前或者之后,不会加到其他特殊的空间中


具有这种性质的数据集就被称为线性结构


线性结构总有两端,在不同的情况下,两端的称呼也不同


有时候称为“左”,“右”端、“前”,“后”端、“顶”,“底”端

两端的称呼并不是关键,不同线性结构的关键区别在于数据项增减的方式


有的结构只允许数据项从一端添加,而有的结构则允许数据项从两端移除

接下来从四个有代表性的来研究数据结构,分别是:


  1. 结构栈
  2. 队列
  3. 双端队列
  4. 列表


这些结构的共同点在于他们都是线性结构,只存在先后的次序关系


栈抽象数据类型以及Python实现


什么是栈


一种有次序的数据项集合,在栈中,数据项的加入和移除都只发生在同一端


这一端叫


栈顶(top)


另一端叫


栈底(base)


日常生活中的栈


距离栈底越近的数据项,留在栈中的时间就越长


而最新加入栈的数据项会被最先移除

怎么说呢,就类似于从箱子里取书吧


如果想拿最底下的,你总不能把箱子拆了


那就得从第一本开始往外拿


这种次序被称为后进先出


这是一种基于数据项保存时间的次序,时间越短的离栈顶越近,而时间越长的离栈底越近


栈的特性:反转次序


进栈与出栈的次序正好相反


来观察一个由混合的python组成的原生栈

左侧的1st、2st等是放入的顺序,右侧则是取出顺序


8.4为栈顶数据,4为栈底数据


抽象数据类型


抽象数据类型“栈”


是一个有次序的数据集,每个数据项只从“栈顶”一端加入数据集中、从数据集中移除,栈具有后进先出的特性(简称为LIFO)


抽象类型数据栈定义为如下操作


Stack():创建一个空栈,不包含任何数据项
push(item):将item加到栈顶,无返回值
pop():移除顶端数据并返回,栈被修改
peek():“窥视”栈顶数据项,返回栈顶的数据项但不移除且栈不被修改
isEmpty():返回栈是否为空栈
size():返回栈中有多少个数据项

以下为应用例子

目录
相关文章
|
14天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
120 26
|
23天前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
127 4
|
23天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
113 4
|
23天前
|
算法 机器人 定位技术
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
|
23天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
|
23天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
|
23天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
|
14天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
17天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
105 1
|
16天前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)

热门文章

最新文章

推荐镜像

更多