数据结构
沉住气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 · 272 阅读 · 0 评论 -
14_数据结构与算法_二叉树_Python实现
#Created By: Chen Daclass 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 · 250 阅读 · 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 · 295 阅读 · 0 评论 -
15_数据结构与算法_分析树_Python实现
#Created By: Chen Da#这里针对简单的数学表达式使用分析树"""(3+(4*5))定义四个规则: 1、如果当前符号是'(',添加一个新节点作为当前节点的左子节点,并下降到左子节点; 2、如果当前符号在列表['+','-','/','*']中,将当前节点的根植设置为由当前符号表示的运算符,添加一个新节点作为当前节点的右子节点, 并下降到右...原创 2018-11-07 19:17:29 · 357 阅读 · 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 · 209 阅读 · 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 · 1598 阅读 · 0 评论 -
10_数据结构与算法_冒泡排序_Python实现
"""冒泡排序: 思想: 从列表的开头处开始,并且比较一对数据项,知道移动到列表的末尾。 每当成对的两项之间的顺序不正确时,算法就交换其位置。 这个过程的效果就是将最大的项以冒泡的方式排到列表的末尾。 然后,算法从列表开头到倒数第2个列表项重复这一个过程,依次类推,直到该算法从列表的最后一项开始执行。"""impor...原创 2018-10-27 20:12:20 · 246 阅读 · 0 评论 -
09_数据结构与算法_选择排序_Python实现
"""选择排序: 思路: 遍历整个列表,找到最小项的位置。 如果该位置不是列表的第一个位置,算法就会交换这两个位置的项; 然后算法回到第二个位置并重复这个过程"""import random#定义一个交换函数def swap(lyst,i,j): temp = lyst[i] lyst[i] =...原创 2018-10-27 19:58:19 · 257 阅读 · 0 评论 -
13_数据结构与算法_快速排序_Python实现
#Created By: Chen Da"""快速排序的思想: 选择基准值pivot将数组分成两个子数组,小于基准值的元素和大于基准值的元素;这个过程称为partition 对两个子数组进行快速排序; 合并结果。"""#一个简单粗暴的递归快排def quik_sort(array): if len(array) < 2: ret...原创 2018-10-31 20:20:25 · 196 阅读 · 0 评论 -
08_数据结构与算法_插入排序_Python实现
"""插入排序: 其思想类似于手中有一些乱序的扑克牌,要将其整理为有序的。 首先拿第二张,与之前一张对比,小于第一张时交换顺序,大于时保持不动。 这样i轮过后,第i大的牌就会出现在第i个位置。"""import randomdef insertion_sort(L): #从下标1开始遍历 for j in range(1,len(L)): ...原创 2018-10-26 23:25:32 · 236 阅读 · 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 · 255 阅读 · 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 · 243 阅读 · 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 · 202 阅读 · 0 评论 -
12_数据结构与算法_归并排序_Python实现
#Created By: Chen Da#定义一个合并方法,等价于Python内置的sorteddef 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 · 211 阅读 · 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 · 246 阅读 · 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 · 489 阅读 · 0 评论 -
03数据结构与算法_单链表_Python实现
'''链式与线性结构的区别: 线性————内存连续、下标访问; 链式————内存不连续、无下标,追加时很方便,寻找的话很麻烦需要遍历。'''#定义节点(具有value和next属性,值和指针)class Node(object): def __init__(self,value=None,next=None): self.value = valu...原创 2018-10-11 22:24:15 · 262 阅读 · 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 · 211 阅读 · 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 · 392 阅读 · 0 评论
分享