![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
charlesAI770
这个作者很懒,什么都没留下…
展开
-
基本数据结构-树
树与树算法 树的概念 模拟具有树状结构性质的数据集合 二叉树的概念 完全二叉树 除了最后一层,其它各层的结点数都达到最大个数 满二叉树 除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。 二叉树的性质(特性) 性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0) 性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0) 性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1; 性质4: 具有n个结点原创 2021-08-09 14:50:01 · 70 阅读 · 0 评论 -
归并排序,二分查找
归并排序 原理 分治法:先递归分解数组,再合并数组。基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 实现 稳定排序 def merge_sort(alist): #拆分 if n <= 1: return alist n = len(alist) mid = n//2 #左边列表形成新的列表 left_li = merge_sort(alist[:mid]) #右边列原创 2021-08-08 16:07:19 · 96 阅读 · 0 评论 -
希尔排序,快速排序
希尔排序 原理 先分组,再插入排序 实现 def shell_sort(alist): n = len(alist) gap = n//2 while gap >= 1: # gap到0之前,插入算法执行的次数 for i in range(gap,n): #一个for循环将所有子序列都处理 i = j while i > 0: if alist[i] < alist[i-gap]: alist[i],alist[i-gap]=alist[i原创 2021-08-07 17:42:08 · 60 阅读 · 0 评论 -
基本数据结构-栈和队列,排序与搜索
栈 定义 后进先出(LIFO)的线性表,只有一端可以操作 实现 创建容器(空列表) class Stack(object): """栈""" def __init__(self): self._list = [] #建立为私有,不允许更改 判断是否为空 def is_empty(self): return self.items == [] #也可以是return not self.__list 压栈 def pu原创 2021-08-06 21:21:11 · 72 阅读 · 0 评论 -
基本数据结构-双向链表,循环链表
双向链表 定义 每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。 实现 定义节点 class Node(object): """双向链表节点""" def __init__(self, item): self.item = item self.next = None self.prev = None 定义双向链表 class DLinkList(Si原创 2021-07-30 11:26:50 · 64 阅读 · 0 评论 -
基本数据结构-单向链表
单向链表 每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 实现 举例引入 a=10 b=20 a,b=b,a #交换变量的值 本质:Python中a=10,并不是在内存a中存储10,而是在内存a中存储元素10的位置,并指向另一块已经存储元素10的区域;a,b=b,a 代表内存a和内存b改变指向,不改变元素存储的位置,从而达到交换的效果。 推广:“=” 在Python中表示 “指向和链接” 节点实现 #创造单链表的结原创 2021-07-16 14:30:32 · 83 阅读 · 0 评论 -
基本数据结构-顺序表
顺序表 一组相同性质的元素,按照顺序的方式排列;位置可以通过计算获得。 分类 存相同的数据类型,占用相同的内存空间,可以使用基本布局 存不同的数据类型,占用不同的内存空间,可以元素外置,将地址存储在4个字节里顺序排列,但需要额外空间去存储元素。例如:list 结构 一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是表头信息,包括元素存储区的容量和当前表中已有的元素个数。 两种实现方式 一体式结构:存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一原创 2021-07-15 09:53:41 · 114 阅读 · 0 评论 -
数据结构与算法基础知识
数据结构 定义 官方定义:数据元素不是孤立存在的,它们之间存在着某种关系,数据元素相互之间的关系称为结构(Structure)。 简单来说:元素按照什么样的方式组织和保存起来,就叫做数据结构。例如:身份信息可以通过列表,元组,字典的方式存储。列表,元组,字典就是一些Python封装的高级数据结构。 分类 逻辑结构(研究对象的特性及其相互之间的关系): 划分方法一: {(1)线性结构:只有一个直接前趋和一个直接后继。例如:线性表、栈、队列、串(2)非线性结构:一个结点可能有多个直接前趋和直接后继。原创 2021-07-14 15:35:43 · 108 阅读 · 0 评论