算法导论 第十章 基本数据类型 & 第十一章 散列表(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比所以值都大) 得到的散列值 在这个下标下处理数据
优点:很好的期望值
难点:哈希函数的设计和冲突处理
下面引用别人的总结:


散列表(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
算法导论 第十章 基本数据类型 & 第十一章 散列表(python)的更多相关文章
- python 教程 第二十一章、 扩展Python
第二十一章. 扩展Python /* D:\Python27\Lib\Extest-1.0\Extest2.c */ #include <stdio.h> #include <std ...
- 《算法导论》学习总结 — XX.第23章 最小生成树
一.什么叫最小生成树 一个无向连通图G=(V,E),最小生成树就是联结所有顶点的边的权值和最小时的子图T,此时T无回路且连接所有的顶点,所以它必须是棵树. 二.为什么要研究最小生成树问题 <算法 ...
- 《算法导论》学习总结 — XX.第22章 图的基本算法
BFS(广搜): 广搜就是广度优先搜索,根据名字可以知道,是通过广度来遍历图,也就是层次遍历吧. 在这里以及下面的DFS(深搜),都用到了颜色WHITE,GRAY,BLACK,不过作用不同,具体分别再 ...
- 算法导论 (Thomas H.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein 著)
第一部分 基础知识 第1章 算法在计算中的作用 第2章 算法基础 第3章 函数的增长 第4章 分治策略 第5章 概率分析和随机算法 第二部分 排序和顺序统计量 第6章 堆排序 第7章 快速排序 第8章 ...
- 基本数据结构(2)——算法导论(12)
1. 引言 这一篇博文主要介绍链表(linked list),指针和对象的实现,以及有根树的表示. 2. 链表(linked list) (1) 链表介绍 我们在上一篇中提过,栈与队 ...
- JavaScript DOM编程艺术-学习笔记(第十章、第十一章)
第十章 1.动画中,因为js的效率高,所以看不见过渡效果 2.题外话:①国外人写书,总是先感谢一遍亲朋好友,最后感谢自己的家人. 3."除非允许用户'冻结'移动的内容,否则应该避免让内容在页 ...
- 算法导论 之 红黑树 - 删除[C语言]【转】
转自:https://blog.csdn.net/qifengzou/article/details/17608863 作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客: ...
- B树——算法导论(25)
B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...
- 红黑树——算法导论(15)
1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...
随机推荐
- iOS 设置UITextView的Placeholder
代码如下: - (void)setupTextView { UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, ...
- two_sum问题
def two_sum(li, target): for i in range(len(li)): for j in range(i+1, len(li)): if li[i] + li[j] == ...
- [BZOJ3916/WOJ3815]Friends
题目链接: 传送门 题目: Description 有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找 ...
- 解题报告:poj 3259 Wormholes(入门spfa判断负环)
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
- 启动azkaban时出现User xml file conf/azkaban-users.xml doesn't exist问题解决(图文详解)
问题详情 [hadoop@master azkaban]$ ll total drwxrwxr-x hadoop hadoop May : azkaban- drwxrwxr-x hadoop h ...
- 将php数组传递到js—json_encode(),json_decode()
json_decode(),对一个json字符串进行解码,json_encode()是生成一个json字符串 上面的解释很清楚了,关于php里数组赋值的问题,列举如下: <?php //对象 c ...
- 初学.net增删改查
分页显示 DAL: public List GetListByPager(int PageIndex, int PageSize, out int RowCount) { string sql = & ...
- javascript回调函数那些事~
什么是回调函数? 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直 ...
- Redis学习笔记(五)散列进阶
HEXISTS key_name key(检查键key是否存在) HKEYS key_name(获得散列的所有键) HVALS key_name(获得散列的所有值) HINCRBY key_name ...
- WEB前端JS与UI框架
前端Js框架汇总 概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人 ...