
python数据结构
隐藏玩家
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python-队列
思路:利用前面讲到得链表来实现链表的闲逛功能,链表中有一个apped操作可以用来实现队列的加入操作,链表的appendleft()函数是删除链表的第一个元素可以用当做链表的pop操作。class quene(object): def __init__(self,maxsize = None):#默认最大值maxsize self.maxsize = maxsize ...原创 2019-04-10 10:08:05 · 178 阅读 · 2 评论 -
python实现二叉树的遍历(递归和非递归)形式
建树class treeNode(object): def __init__(self, value = None,left = None,right=None): self.value, self.left, self.right,self.key= value, left, right, 0#0用来表示访问左子树,1表示访问左子树class Tree(object...原创 2019-04-23 19:57:22 · 433 阅读 · 0 评论 -
python-树(二叉树)
树:树结构是一种包括(结点)和(边)的的拥有层级关系的一种结构,它的形式和家谱十分的相似。根节点:树的最上层的节点,任何非空的树都有一个结点。路径:从起始节点到终止结点经历过。父亲:除了根节点,每个结点的上层边连接的节点就是他的父亲。(结点)孩子:每个结点由边指向的下一层节点兄弟:每个结点包括他所有的后代组成的子树子树:每个结点包含它所有后代组成的子树叶子结点:没有孩子结点成为叶子结...原创 2019-04-18 20:24:59 · 184 阅读 · 0 评论 -
图-python
图:简单的来讲就是结点(node)和边(edge)组成的一种数据结构,相邻的结点称为邻居。注意与分为有向图和无向图。图的表示:图的表示方法分为领接表和邻接矩阵表示。邻接表法:将每个与结点i相邻的结点全部存放在邻接表中。邻接矩阵不加描述。图的遍历遍历图最常用的有两种方式,就是BFS和DFS。BFS:Breadth First Search, 广度优先搜索DFS: Breadth...原创 2019-04-22 21:08:39 · 136 阅读 · 0 评论 -
二插查找树(BST)
前面讲过的查找操作包括线性差早,二分查找,哈希查找等,线性查找的效率比较的低,二分查找又要求序列是有序的,而哈希查找虽然能在线性的时间复杂度内找到,但是所需的辅助空间巨大,二插查找树可以高效的插入和查询结点。BST二插查找树是这样一种二叉树结构,它的每一个结点包含一个key和它附带的数据,对每一个结点V:所有的key小于V都被存储在V的左子树所有key大于V的都存在V的右子树构造一个...原创 2019-04-22 10:29:49 · 163 阅读 · 0 评论 -
优先级队列-python
优先级队列在之前写最短路径,和哈夫曼编码的时候都用到了优先级队列优化,用的是c++中的包,priority_Queue。那在Python中会以什么形式存在呢。class Array(object): def __init__(self, maxsize=None): self.elem = [None] * maxsize self.length = ...原创 2019-04-21 11:12:25 · 394 阅读 · 0 评论 -
堆排序-python
堆(heap)什么堆? 堆是一种完全二叉树,有最大堆和最小堆两种。最大堆:对于每个非叶节点V,V的值都比它的两个孩子大,称为最大堆特性(heap order property)最大堆里的根总是存储最大值,最小值存储在叶节点。最小堆:和最大堆相反,每个叶节点V,V的两个孩子的值逗比它大。堆的操作堆提供了很有限的几个操作:插入新的值,插入比较麻烦的就是需要维持堆的特性。需要一个sif...原创 2019-04-20 23:02:47 · 205 阅读 · 0 评论 -
基本排序-python
冒泡排序:def bubble_sort(seq): n = len(seq) for i in range(n-1): for j in range(n-1-i): if seq[j]>seq[j+1]: seq[j],seq[j+1] = seq[j+1],seq[j] print(seq)...原创 2019-04-12 13:50:05 · 127 阅读 · 0 评论 -
高级排序-python
归并排序:def Merge(req): if len(req) <=1:#长度小于一则直接返回当前串 return req else: mid = len(req)//2#分成两部分 left_part = Merge(req[:mid])#对左半边分解 right_part = Merge(req[mid:...原创 2019-04-12 11:33:24 · 143 阅读 · 0 评论 -
查找(线性,二分)
差找:线性查找:num_list = [0,1,2,3,4,5,6]def linear_search(Num_List, value): for key, elem in enumerate(Num_list): if elem == value: return key return -1assert linear_search(4,num_list) == 5#pri...原创 2019-04-10 16:33:46 · 213 阅读 · 0 评论 -
线性结构
线性结构:1内存连续 2.通过下标访问数组(array):python内置的array一般不常用于线性存储因为它只能含有一种数据类型。import array from arrayarr = array('u','asdf')#后面的参数为初始化类型print(arr[0])#'a' 列表(list):操作平均时间复杂度list[index]O(1)li...原创 2019-04-05 21:26:36 · 114 阅读 · 0 评论 -
python-集合(set)
python-集合按操作方式集合分为可变和不可变两个版本,内部实现完全相同。用数组实现的哈希表存储元素对象引用,这也就要求必须为可哈希类型。创建:和字典一样使用大括号type({})#dicttype({1})#set允许在不同的版本之间进行转换s = {1}f = frozenset(s)print(set(f))#{1}操作支持大小,相同运算符。{1, 2}...原创 2019-04-19 21:19:27 · 146 阅读 · 0 评论