python数据结构
文章平均质量分 58
全网最简单的python数据结构零基础入门教程
童话里作英雄
这个作者很懒,什么都没留下…
展开
-
21、python数据结构——枚举算法
枚举算法的基本思想是根据问题的本身性质,一一列出问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解。枚举算法是通过牺牲时间换取答案的全面性,属于搜索策略,适用于那些解变量连续、值域确定的问题。找出1~100之间的素数,需要对1到100之间的所有整数进行判断。原创 2023-04-02 09:56:23 · 396 阅读 · 0 评论 -
20、python数据结构——动态规划
动态规划也是数据结构算法的一种思想。我们来看看我们熟悉的斐波那契数列,F(n)=F(n-1) + F(n-2),我们来写一下实现的递归和非递归版本。在数值比较大的时候,我们会明显发现递归方法程序执行的时间变长了,这是为什么呢?其实是因为我们重复计算子结构的原因,因为我们在使用递归的时候,对每一个子问题是需要重复计算的,我们可以通过下图理解:每个递归都是独立的,递归之中重复计算了很多相同的计算式,所以当数值越大,计算的时间也就越久,效率很低。原创 2023-03-30 23:45:17 · 482 阅读 · 0 评论 -
19、python数据结构——贪心算法
贪心算法又称贪婪算法,指的是在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是某种意义上的局部最优解。原创 2023-03-30 16:13:29 · 337 阅读 · 0 评论 -
18、python数据结构——AVL树
AVL树是一颗自平衡的二叉搜索树。拥有如下特征:根的左右子树的高度之差的绝对值不能超过1;根的左右子树都是平衡二叉树。AVL树的删除、插入操作。代码如下:代码有误版本。原创 2023-03-25 00:32:24 · 371 阅读 · 1 评论 -
17、python数据结构——二叉搜索树
二叉搜索树事一颗二叉树且满足性质:设x是二叉搜索树的一个节点,如果y是x左子树的一个节点,那么y.key = x.key。原创 2023-03-24 19:53:14 · 735 阅读 · 0 评论 -
16、python数据结构——二叉树的遍历
我们在第5章的时候就已经讲过树的基本概念了。忘记了的记得去回顾,现在我们使用树来进行应用。我们将使用树来制作一个模拟文件系统。通过上面的代码,可以发现主要就是节点(node)的设置需要熟悉,其他就是正常逻辑性的代码。二叉树的链式存储:将二叉树的节点定义为一个对象,节点之间通过类似链表的链接方法来连接。流程图如下:二叉树的遍历方式为:前序遍历、中序遍历、后序遍历、层次遍历;在上面的二叉树代码的基础上,我们使用不同的遍历方式来观察不同遍历的输出。原创 2023-03-23 08:04:26 · 275 阅读 · 0 评论 -
15、python数据结构——哈希表
哈希表是一个哈希函数来计算数据储存位置的数据结构,通常支持如下操作:insert(key,value):插入健值对(key,value)get(key):如果存在键key的健值则返回value,否则返回空值delete(key):删除键为key的健值对。原创 2023-03-22 21:36:56 · 757 阅读 · 0 评论 -
13、python数据结构——双链表
双链表的每个节点有两个指针:一个指向后一个节点,另一个指向前一个节点。原创 2023-03-22 10:00:38 · 137 阅读 · 0 评论 -
12、python数据结构——链表
链表是由一系列节点(node)组成的元素集合。每个节点包含两个部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。一般的列表有两种实现方式:1、头插法;2、尾插法。原创 2023-03-22 09:09:03 · 230 阅读 · 0 评论 -
11、python数据结构——栈和队列的应用
一个经典的栈和队列的应用就是我们的迷宫问题,我们将使用二维列表表示迷宫(0表示通道,1表示围墙),然后我们需要设计算法,来得到走出迷宫的一条路径。原创 2023-03-21 09:52:38 · 201 阅读 · 0 评论 -
9、python数据结构——何为数据结构
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。。列表、集合和字典等都是一种数据结构。数据结构按照其逻辑结构可以分为:线性结构(一对一)、树结构(一对多)、图结构(多对多)原创 2023-03-20 22:57:52 · 132 阅读 · 0 评论 -
10、python数据结构——内置队列模块
python的内置模块是一个双向队列,双向队列其实和栈很相似,栈是支持一端push和pop操作;双向队列则支持两端push和pop操作,即队首入队和出队,队尾入队和出队。使用内置模块的话,队列满了是不会报错的,而是将之前的值进行覆盖,我们可以通过这样的一个特性来进行应用,例如:可以得到一个文档的最后几行。双向队列队首进队:appendleft()创建队列:queue = deque()出队(front):popleft()进队(rear):append()双向队列队尾出队:pop()原创 2023-03-21 07:17:08 · 221 阅读 · 0 评论 -
8、python数据结构——计数排序、桶排序、基排序
所谓计数排序也就是通过计数的方式来进行排序输出。个人理解为:计数排序是将具体的值进行计数,而桶排序则是不仅限于具体的值,而是变成一个区间,然后再对这个区间里面的数值进行排序。那么要是我们的数据的位数不同怎么办,不用担心,我们可以通过低位数前面自动补零完成,但是在代码中我们不需要考虑这个问题,因为我们可以通过取余的方式去得到对应的位数大小。,因为n是列表长度,第一个for循环是n,但是第二个for循环虽然嵌套了,但是其实总体遍历也是整个列表,也就是时间复杂度也是n,所以总体的时间复杂度就是n。原创 2023-03-19 16:23:55 · 157 阅读 · 0 评论 -
7、数据结构——希尔排序
希尔排序的思路:1.列表长度为n,所以取d1=n/2,将列表元素分为d1个组,每组相邻元素的距离为d1,对各个组内部进行插入排序;希尔排序是插入排序方式的一种改进,是分组进行插入排序的方法。希尔排序有多种选择的方式,它不是一个固定的方法,前人已经针对希尔排序做出来很多改进,我们这里只讲最简单的希尔排序(二分)。其实我们很容易就能发现,希尔排序是在插入排序的基础上进行修改的,增加了几次使用而已,但是希尔排序的运算时间是优于插入排序的,但是又比快速排序、堆排序、归并排序差一些。原创 2023-03-17 18:06:18 · 99 阅读 · 0 评论 -
6、数据结构——常用排序方法
上一篇我们讲述了三种简单排序方法,这一次我们就讲述三种常用排序,分别为:快速排序、堆排序、归并排序。原创 2023-03-16 21:02:20 · 49 阅读 · 0 评论 -
5、数据结构——树与堆的基本概念
分别通过将父节点和左右孩子节点在列表中的编号下标进行对比,我们可以发现父节点和左孩子节点的关系为:i -> 2i+1(i为父节点编号下标);总结:如果我们想要通过孩子节点找到父节点的话,我们可以通过 ==(孩子节点的编号-1)// 2 == 的方式,直接找到父节点的编号。6、双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;2、孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;3、节点的度:一个节点含有的子节点的个数称为该节点的度;原创 2023-03-07 07:55:52 · 70 阅读 · 0 评论 -
4、数据结构——简单排序方法
排序:将一组“无序”序列调整为“有序”序列,列表排序:将无序列表变为有序列表。python内置排序函数:sort()常见的排序算法有:1、简单排序:冒泡排序、选择排序、插入排序;2、进阶排序:快速排序、堆排序、归并排序;3、其它排序:希尔排序、计数排序、基数排序……这篇文章我们先来介绍简单排序方法,我们都将使用从小到大的排序顺序。原创 2023-03-02 20:38:07 · 83 阅读 · 0 评论 -
3、数据结构——查找
查找是通过一定的方式找到与给定关键字相同数据元素的过程。常见的查找方式有两种:顺序查找和二分查找。原创 2023-02-28 19:26:27 · 43 阅读 · 0 评论 -
2、数据结构——递归
递归、汉诺塔超简单理解原创 2023-02-24 20:38:07 · 143 阅读 · 1 评论 -
1、数据结构——时间复杂度和空间复杂度
2、常见时间复杂度排列顺序:O(1)原创 2023-02-24 19:42:58 · 105 阅读 · 0 评论