![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
沉住气CD
这个作者很懒,什么都没留下…
展开
-
01_数据结构与算法_抽象数据类型_Python实现
''' 实现一个ADT时要注意的问题: 1、选用什么数据结构? 2、能否操作? 3、能否支持很高效的操作?效率怎么样? ''' class Bag(object): def __init__(self,max_size=10): self.max_size = max_size self._items = list() ...原创 2018-10-11 22:22:22 · 204 阅读 · 0 评论 -
14_数据结构与算法_二叉树_Python实现
#Created By: Chen Da class BinaryTree(object): def __init__(self,rootObj): self.key = rootObj self.left_child = None self.right_child = None def insert_left(self,ne...原创 2018-11-05 15:01:30 · 185 阅读 · 0 评论 -
16_数据结构与算法_遍历树(前序、中序、后序)_Python实现
#Created By: Chen Da #定义一个二叉树的类 class Binary_Tree(object): def __init__(self,root): self.key = root self.left_child = None self.right_child = None def insert_left(se...原创 2018-11-07 19:57:51 · 215 阅读 · 0 评论 -
15_数据结构与算法_分析树_Python实现
#Created By: Chen Da #这里针对简单的数学表达式使用分析树 """ (3+(4*5)) 定义四个规则: 1、如果当前符号是'(',添加一个新节点作为当前节点的左子节点,并下降到左子节点; 2、如果当前符号在列表['+','-','/','*']中,将当前节点的根植设置为由当前符号表示的运算符,添加一个新节点作为当前节点的右子节点, 并下降到右...原创 2018-11-07 19:17:29 · 284 阅读 · 1 评论 -
19_数据结构与算法_查找树_Python实现
#Created By: Chen Da #构造一个树节点的类 #以此作为BinarySearchTree的引用 class TreeNode(object): def __init__(self,key,value,left=None,right=None,parent=None): self.key = key self.value = value ...原创 2018-11-10 12:37:03 · 154 阅读 · 0 评论 -
18_数据结构与算法_图(邻接表)_Python实现
# Title : TODO # Objective : TODO # Created by: Chen Da # Created on: 2018/11/10 #顶点类 class Vertex(object): def __init__(self,key): self.id = key self.connectedTo = {} d...原创 2018-11-10 12:35:40 · 1496 阅读 · 0 评论 -
10_数据结构与算法_冒泡排序_Python实现
""" 冒泡排序: 思想: 从列表的开头处开始,并且比较一对数据项,知道移动到列表的末尾。 每当成对的两项之间的顺序不正确时,算法就交换其位置。 这个过程的效果就是将最大的项以冒泡的方式排到列表的末尾。 然后,算法从列表开头到倒数第2个列表项重复这一个过程,依次类推,直到该算法从列表的最后一项开始执行。 """ impor...原创 2018-10-27 20:12:20 · 186 阅读 · 0 评论 -
09_数据结构与算法_选择排序_Python实现
""" 选择排序: 思路: 遍历整个列表,找到最小项的位置。 如果该位置不是列表的第一个位置,算法就会交换这两个位置的项; 然后算法回到第二个位置并重复这个过程 """ import random #定义一个交换函数 def swap(lyst,i,j): temp = lyst[i] lyst[i] =...原创 2018-10-27 19:58:19 · 175 阅读 · 0 评论 -
13_数据结构与算法_快速排序_Python实现
#Created By: Chen Da """ 快速排序的思想: 选择基准值pivot将数组分成两个子数组,小于基准值的元素和大于基准值的元素;这个过程称为partition 对两个子数组进行快速排序; 合并结果。 """ #一个简单粗暴的递归快排 def quik_sort(array): if len(array) < 2: ret...原创 2018-10-31 20:20:25 · 137 阅读 · 0 评论 -
08_数据结构与算法_插入排序_Python实现
""" 插入排序: 其思想类似于手中有一些乱序的扑克牌,要将其整理为有序的。 首先拿第二张,与之前一张对比,小于第一张时交换顺序,大于时保持不动。 这样i轮过后,第i大的牌就会出现在第i个位置。 """ import random def insertion_sort(L): #从下标1开始遍历 for j in range(1,len(L)): ...原创 2018-10-26 23:25:32 · 174 阅读 · 0 评论 -
07_数据结构与算法_栈_Python实现
#Created By: Chen Da """ 栈区 LIFO结构 ADT: method:push、pop """ #先实现一个双端链表 class Node(object): def __init__(self,prev=None,value=None,next=None): self.prev,self.value,s...原创 2018-10-26 21:51:33 · 181 阅读 · 0 评论 -
06_数据结构与算法_双端队列_Python实现
#Created By: Chen Da """ 思路: 先实现一个双端链表; 继承双端链表: 实现O(1)复杂度下的append、appendleft、pop、popleft方法 """ #先实现一个双端链表 class Node(object): def __init__(self,prev=None,value=None,next=None): ...原创 2018-10-26 21:49:41 · 178 阅读 · 0 评论 -
05_数据结构与算法_队列_Python实现
#Created by: Chen Da """ 队列类似生活中的排队,为FIFO结构。 两个基本操作:入队push和出队pop。 用单链表可以实现,双链表虽然可以,但是操作比较复杂。 """ #先实现一个单链表 class Node(object): def __init__(self,value=None,next=None): self.value,self...原创 2018-10-26 21:36:31 · 143 阅读 · 0 评论 -
12_数据结构与算法_归并排序_Python实现
#Created By: Chen Da #定义一个合并方法,等价于Python内置的sorted def merge_sorted_list(sorted_a,sorted_b): length_a,length_b = len(sorted_a),len(sorted_b) a = b = 0 #定义指针 ...原创 2018-10-29 19:52:32 · 147 阅读 · 0 评论 -
11_数据结构与算法_递归_Python实现
#Created By: Chen Da """ 阶乘函数就是典型的递归: def fact(n): if n == 0: return 1 else: return n * fact(n-1) 递归的特点: 递归必须包含一个基本的出口(base case),否则就会无限递归,最终导致栈溢出。比如这里就是n==0时返回1. 递归...原创 2018-10-28 20:32:14 · 182 阅读 · 0 评论 -
04数据结构与算法_双端链表(闭环)_Python实现
#定义节点 class Node(object): def __init__(self,prev=None,value=None,next=None): self.prev,self.value,self.next = prev,value,next #定义双端列表 class CircualDoubleLinkedList(object): def __ini...原创 2018-10-11 22:25:20 · 408 阅读 · 0 评论 -
03数据结构与算法_单链表_Python实现
''' 链式与线性结构的区别: 线性————内存连续、下标访问; 链式————内存不连续、无下标,追加时很方便,寻找的话很麻烦需要遍历。 ''' #定义节点(具有value和next属性,值和指针) class Node(object): def __init__(self,value=None,next=None): self.value = valu...原创 2018-10-11 22:24:15 · 195 阅读 · 0 评论 -
02数据结构与算法_数组和列表_Python实现
''' 线性结构:内存连续、下标访问。如数组、列表。内存连续,很容易通过下标来进行访问。 Python内置数组array: 用的不是很多; 只能同一类型;如数值、字符 python中list内置方法的时间复杂度: init————O(1),生成一个列表对象; append————O(1)至O(3)的复杂度; insert————O(n) po...原创 2018-10-11 22:23:18 · 156 阅读 · 0 评论 -
17_数据结构与算法_二叉堆_Python实现
#Created By: Chen Da #先实现一个二叉堆,基于完整二叉树 class Binary_heap(object): def __init__(self): self.heap_list = [0] #一个空的二叉堆以零作为第一个元素,方便后续的整除计算 self.curr_size = 0 #通过比较新添加...原创 2018-11-08 13:35:29 · 314 阅读 · 0 评论