- 博客(12)
- 收藏
- 关注
原创 Python学习数据结构之二叉堆
二叉堆: 二叉堆是一种有树形,但是没有树体的数据结构。它在本质上是一种优先级队列。我们知道队列是一种先进先出的数据结构的,它的元素顺序取决于入队的顺序。但是二叉堆有一点不同,就是它的元素顺序取决于优先级,也就是说入队的时候已经找到了唯一且固定的位置安置这个元素。 就时间复杂度而言,二叉堆在出入队的操作是O(log n),这是很低的数值了。 二叉堆分为最大堆和最小堆。最大堆的意思就是队列的最大节点永...
2020-02-18 14:57:47
179
原创 Python学习算法之顺序搜索与二分搜索
顺序搜索: 我们首先来看顺序搜索,这是一种简单的搜索形式。遍历整个无序数组,如果找到目标元素返回True,未找到则返回False python实现: def shunXu(alist,num): J = False i = 0 while not J and i < len(alist): if alist[i] == num: ...
2020-02-17 22:32:28
358
原创 Python学习算法之选择排序
选择排序: 选择排序是六种基本排序方式中的一种,与冒泡排序类似,但是规避了冒泡排序一个元素需要多次交换顺序的缺点。 选择排序每次遍历找到当前列表中最大的值与尾部交换,而后数组长度减一,直到达到首位元素退出循环。 python 实现: def xuanZe(List): for pos in range (len(List)-1,0,-1): Max = 0 ...
2020-02-17 21:49:34
129
原创 短冒泡排序
python实现短冒泡排序 冒泡排序是常用的排序算法之一,但是它过于低效。通常的冒泡排序有两大缺点: 第一:是每一个元素都需要经过若干次交换才能找到自己的位置,尤其是位于前端的较大的元素。 第二:假如数组在冒泡排序的途中已经排好了正确的顺序,算法还是会迭代直到最后第一个元素,造成了时间性能上的浪费。 短冒泡排序是针对第二种情况提出的解决方案,加入一个布尔型变量,记录本次循环是否存在交换现象,如果一...
2020-02-17 14:22:35
301
原创 Python学习算法之冒泡排序
冒泡排序 冒泡排序是六种基本排序算法之一,比较方式是在数组中每次比较相邻两个元素的大小,并且互相交换顺序,每迭代一次选出当前列表里的最大元素,知道列表长度为1(即选出最小元素为止) python实现: #向函数传入数组 def maoPao(List): #控制迭代次数 for pos in range(len(List),0,-1): #两两比较,前大于后则互换数值 ...
2020-02-17 13:34:03
114
原创 Python学习数据结构之(节点)树
节点与引用构成树: 我们定义一个具有根节点和引用(具有左右子树)的类。左右节点指向其他的节点与引用实例。随着数据得添加持续向下引用节点,构成完整的树结构。 python实现: ...
2020-02-17 12:04:17
734
原创 Python学习数据结构之(列表)树
列表之列表构成树 使用列表之列表和节点法都可以完成树的构建。 树是一种很常见的数据结构,它在维持算法的有序性上具有巨大作用。 话不多说上代码: ...
2020-02-17 10:07:41
302
原创 约瑟夫斯问题,十步杀一人(环形队列)
Python实现环性队列,解决约瑟夫斯站位问题 弗拉维奥·约瑟夫斯是公元1世纪著名的历史学家。相传,约瑟夫斯当年和39个战友在山洞中对抗罗马军队。眼看着即将失败,他们决定舍生取义。于是,他们围成一圈,从某个人开始,按顺时针方向杀掉第7人。约瑟夫斯同时也是卓有成就的数学家。据说,他立刻找到了自己应该站的位置,从而使自己活到了最后。当只剩下他时,约瑟夫斯加入了罗马军队,而不是自杀。这个故事有很多版本,...
2020-02-16 18:53:44
881
原创 Python学习数据结构之链表
Python学习数据结构之链表: 链表是一种无序的数据结构,这里的顺序是指在计算机内存空间中是否保持相应的连续顺序。 可以将链表看成是无序的列表。 链表中的每一个元素必须维护与下一个元素的关系,即储存下一个元素的内存地址。 在这里我们可以想象数组是一串连续的储存空间,而链表是一串间断性的储存空间。故而链表对于内存空间的利用要优于数组。 链表的python实现: 链表是一种类栈结构,应该想象成向麻袋...
2020-02-16 15:52:20
105
原创 Python学习数据结构之双端队列
Python学习数据结构之双端队列: 双端队列是栈和队列的结合体,在首尾都可以添加和删减元素,属于有序集合。 让我们使用Python实现一下: class Deque : #初始化: def __init__(self): self.items = [] #判断是否为空: def isempty(self): return self...
2020-02-16 10:30:19
98
原创 python学习数据结构之队列
Python学习数据结构之队列 队列是一种很基本的数据结构 它属于有序集合的一种,顺序取决于元素在添加时的顺序 它的添加操作总是发生在队尾,移除操作则发生在队顶,可以形象地想象为大家在排队,排在最前面的人肯定最先接受服务,最先离开。 FIFO: first in first out ##话不多说,下面我们用蛇语实现一下: class Queue: def __init__(sel...
2020-02-15 22:42:21
99
原创 python学习数据结构之栈
Python 数据结构之栈: 栈属于有序集合,它的顺序取决于元素添加的顺序,即先进后出,可以形象地想象为乘坐电梯,最先进去的人总是最后一个走出电梯的,这便是栈。 FILO:first in last out 栈的移除和添加操作总是发生在顶端,下面我们用python实现一下 代码如下: class Stack(): #初始化: def __init__(self): ...
2020-02-15 11:26:51
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人