摘要: """ 堆是一种完全二叉树,有最大堆和最小堆两种。 最大堆:对于每个非叶子结点V,V的值都比它的两个孩子结点大,称为最大堆特性(heap order property), 最大堆里面的根总是储存最大值,最小值储存在叶子结点。 最小堆:和最大堆相反,每个非叶子结点V,它的两个孩子的值都比V的值大。 """ # 实现最大堆 # 首先实现一个数组 class Array(object... 阅读全文
posted @ 2019-04-26 20:32 DRQ丶 阅读(386) 评论(0) 推荐(0) 编辑
摘要: class BinTreeNode(object): def __init__(self, data, left = None, right = None): self.left = left self.right = right self.data = data node_list = [ {'d 阅读全文
posted @ 2019-04-09 21:15 DRQ丶 阅读(355) 评论(0) 推荐(0) 编辑
摘要: ''' 1 选择基准值pivot将数组分成两个子数组:小于基准值的元素和大于基准值的元素。这个过程称之为partition 2 对这两个子数组进行快速排序。 3 合并结果 ''' ''' 这里快速排序有两个缺点。 1 需要额外的储存空间来存放数组,less_part,great_part。 2 每一 阅读全文
posted @ 2019-03-27 15:04 DRQ丶 阅读(630) 评论(0) 推荐(0) 编辑
摘要: import random # 我也是想了很久才想明白,递归用的太少了。画下图自己模拟一下就行了。 # 先递归分成单个元素,然后排序。 # 排序的函数传入的值是两个连续的数组。 # 因为单个元素的时候就进行排序,所以返回的一left_half,right_half 一定是排好序的 def merge 阅读全文
posted @ 2019-03-20 19:59 DRQ丶 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 1 class Array(object): 2 3 def __init__(self, size = 32, init = None): 4 self._size = size 5 self._items = [init] * size 6 7 8 def __getitem__(self, i 阅读全文
posted @ 2019-03-12 19:22 DRQ丶 阅读(968) 评论(0) 推荐(0) 编辑
摘要: 1 class Array(object): 2 3 def __init__(self, size = 32, init = None): 4 self._size = size 5 self._items = [init] * size 6 7 8 def __getitem__(self, i 阅读全文
posted @ 2019-03-11 11:14 DRQ丶 阅读(1173) 评论(0) 推荐(0) 编辑
摘要: class Node(object): # 结点有两个指针 def __init__(self, maxsize = None, value = None, next = None, prev = None): self.maxsize = maxsize self.value = value se 阅读全文
posted @ 2019-03-04 22:49 DRQ丶 阅读(278) 评论(0) 推荐(0) 编辑
摘要: # 队列两端都可以进行push和pop操作。 push操作可以用循环双端链表的append,appendleft。 # pop操作使用循环双端链表的romove class Node(object): # 结点有两个指针 def __init__(self, maxsize = None, valu 阅读全文
posted @ 2019-02-15 00:24 DRQ丶 阅读(451) 评论(0) 推荐(0) 编辑
摘要: # 数组有一个固定的长度。头指针和尾指针,都指向数组第一个值。 # 当进行push操作的时候,头指针后移。当进行pop操作的时候,尾指针向后移 # 当到达最后一个值的时候,重新指向第一个值。取模 %queue_size() # 首先实现一个数组 class Array(object): def __ 阅读全文
posted @ 2019-02-14 20:15 DRQ丶 阅读(1729) 评论(0) 推荐(0) 编辑
摘要: # 根节点作为入口, 队列先进先出。 出队的地方是根结点的下一个结点. 入口是尾结点 class Node(object): def __init__(self, value=None, next=None): self.value = value self.next = next def __st 阅读全文
posted @ 2019-02-14 10:13 DRQ丶 阅读(189) 评论(0) 推荐(0) 编辑