随笔分类 - 数据结构
摘要:class BinTreeNode(object): def __init__(self, data, left = None, right = None): self.left = left self.right = right self.data = data node_list = [ {'d
阅读全文
摘要:''' 1 选择基准值pivot将数组分成两个子数组:小于基准值的元素和大于基准值的元素。这个过程称之为partition 2 对这两个子数组进行快速排序。 3 合并结果 ''' ''' 这里快速排序有两个缺点。 1 需要额外的储存空间来存放数组,less_part,great_part。 2 每一
阅读全文
摘要:import random # 我也是想了很久才想明白,递归用的太少了。画下图自己模拟一下就行了。 # 先递归分成单个元素,然后排序。 # 排序的函数传入的值是两个连续的数组。 # 因为单个元素的时候就进行排序,所以返回的一left_half,right_half 一定是排好序的 def merge
阅读全文
摘要: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
阅读全文
摘要: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
阅读全文
摘要:class Node(object): # 结点有两个指针 def __init__(self, maxsize = None, value = None, next = None, prev = None): self.maxsize = maxsize self.value = value se
阅读全文
摘要:# 队列两端都可以进行push和pop操作。 push操作可以用循环双端链表的append,appendleft。 # pop操作使用循环双端链表的romove class Node(object): # 结点有两个指针 def __init__(self, maxsize = None, valu
阅读全文
摘要:# 数组有一个固定的长度。头指针和尾指针,都指向数组第一个值。 # 当进行push操作的时候,头指针后移。当进行pop操作的时候,尾指针向后移 # 当到达最后一个值的时候,重新指向第一个值。取模 %queue_size() # 首先实现一个数组 class Array(object): def __
阅读全文
摘要:# 根节点作为入口, 队列先进先出。 出队的地方是根结点的下一个结点. 入口是尾结点 class Node(object): def __init__(self, value=None, next=None): self.value = value self.next = next def __st
阅读全文
摘要:# -*- coding:utf-8 -*-"""每一个结点包含prev, value , next。 prev指向上一个结点。 root根节点作为接口。根节点的下一个结点是head结点。尾结点尾tail,tail.next=root, root.prev = tail所以说这是一个双端循环结点""
阅读全文
摘要:# -*- coding:utf-8 -*- class Node(object): def __init__(self, value = None, next = None): self.value = value self.next = next class Linklist(object):
阅读全文