zoukankan      html  css  js  c++  java
  • 算法导论 第十章 基本数据类型 & 第十一章 散列表(python)

    更多的理论细节可以用《数据结构》严蔚敏 看几遍,数据结构很重要是实现算法的很大一部分

    下面主要谈谈python怎么实现

    10.1 栈和队列

    栈:后进先出LIFO

    队列:先进先出FIFO

    python 中使用list实现在这些功能

    栈:压栈 append() 退栈   pop()

    队列:   入队 append() 出队 pop(0)

    栈:

    >>> stack = list()
    >>> stack.append(3)
    >>> stack.append(2)
    >>> stack.append(5)
    >>> stack.append(1)
    >>> stack
    [3, 2, 5, 1]
    >>> stack.pop()
    1
    >>> stack.pop()
    5

    队列:

    >>> queue = list()
    >>> queue.append(1)
    >>> queue.append(2)
    >>> queue.append(3)
    >>> queue.append(4)
    >>> queue.append(5)
    >>> queue
    [1, 2, 3, 4, 5]
    >>> queue.pop(0)
    1
    >>> queue.pop(0)
    2
    >>> queue
    [3, 4, 5]

    链表&指针对象的数组实现

    这些数据结构在python中就没有存在的价值, 用list都能轻松实现

    有根树:

    class Node:
        def __init__(self,data):
            self.left = None
            self.right = None
            self.parent = None
            self.data = data

    给出一个结点代码,后面的二叉搜索树红黑树再具体讨论。

    散列表(哈希表)

    ”散列表是普通数组概念的推广“一这句话来解释散列表再好不过了.

    可以把数组看成散列函数为hash(x) = x % MAX (MAX比所以值都大) 得到的散列值 在这个下标下处理数据

    优点:很好的期望值

    难点:哈希函数的设计和冲突处理

    下面引用别人的总结:

    clipboard

    clipboard[1]

    散列表(python 使用dict):

    >>> #初始化
    >>> a = dict(one = 1,two = 2)
    >>> #访问
    >>> a['one']
    1
    >>> #增加
    >>> a['three'] = 3
    >>> a
    {'three': 3, 'one': 1, 'two': 2}
    >>>

    参考引用:

    http://www.wutianqi.com/?cat=515&paged=4

    http://blog.csdn.net/fxjtoday/article/details/6448083

  • 相关阅读:
    系统安全及应用
    进程和计划任务管理
    Java技术体系
    开机十步和进程管理
    Raid
    LVM逻辑卷
    sed命令
    磁盘管理
    你的背景,是这个时代 张璁
    别将梦想停留在二十岁
  • 原文地址:https://www.cnblogs.com/liguan/p/5186866.html
Copyright © 2011-2022 走看看