上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: myfunc=wrapper(myfunc)是一种很常见的修改其它函数的方法。从python2.4开始,可以在定义myfunc的def语句之前写@wrapper。 这些封装函数就被称为装饰器Decorator,其主要用途是包装另一个函数或类。这种包装的首要目的是透明的修改或增强被包装对象的行为。 1 阅读全文
posted @ 2014-07-19 23:57 再见紫罗兰 阅读(704) 评论(0) 推荐(0) 编辑
摘要: Dijkstra算法解决了有向图G=(V,E)上带权的单源最短路径问题,但要求所有边的权值非负。Dijkstra算法是贪婪算法的一个很好的例子。设置一顶点集合S,从源点s到集合中的顶点的最终最短路径的权值均已确定。算法反复选择具有最短路径估计的顶点u,并将u加入到S中,对u的所有出边进行松弛。如果可... 阅读全文
posted @ 2014-07-10 22:02 再见紫罗兰 阅读(2184) 评论(1) 推荐(2) 编辑
摘要: 有一个无权的图G,使用某个顶点s作为输入参数,找出从s到其它顶点的最短路径。这样,只要计算包含在路径中的边数就可以了。比如,一个word ladder problem,一次只变换一个字母,找出从fool到sage的最短路径。可用的单词可以转化为一个图:首先寻找与fool距离为1的顶点:然后可以寻找距... 阅读全文
posted @ 2014-07-09 16:18 再见紫罗兰 阅读(1316) 评论(0) 推荐(0) 编辑
摘要: 拓扑排序是对有向无圈图的顶点的一种排序。如果存在一条vi到vj的路径,则vi排在vj前面。如果图含有圈,则拓扑排序是不可能的。拓扑排序的两种排法:一个简单的求拓扑排序的算法是先找出任意一个没有入边的顶点,然后显示出该顶点,并将它和它的边一起从图中删除,对图的其余部分应用同样的方法。首先,对于每个顶点... 阅读全文
posted @ 2014-07-05 21:15 再见紫罗兰 阅读(1235) 评论(0) 推荐(0) 编辑
摘要: 一个图(graph)G=(V,E)是由顶点集V和边集E组成。每一条边就是一个顶点对(v,w),其中v,w∈V。如果点对是有序的,那么图就是有向图。图中的一条路径path是一个顶点序列w1,w2,w3,...,wk,使得(wi,wi+1)∈E,1<=i<=k。路径的长是该路径上的边数。 如果在一个无... 阅读全文
posted @ 2014-07-05 19:52 再见紫罗兰 阅读(2443) 评论(0) 推荐(0) 编辑
摘要: 不相交集合数据结构保持一组不相交的动态集合S={S1,S2,...,SK},每个集合通过一个代表来识别,代表即集合中的某个成员。如果x表示一个对象,不相交集合支持以下操作:MAKE-SET(x):建立一个新的集合,其唯一成员为x。因为各集合是不想交的,故x没有在其它集合中出现。UNION(x,y):... 阅读全文
posted @ 2014-07-04 23:00 再见紫罗兰 阅读(1173) 评论(0) 推荐(0) 编辑
摘要: 排序是算法学习中最基本的问题。1.平均时间复杂度均为O(N2)的排序1.1 插入排序插入排序对少量元素的排序非常有效。工作机制就像打牌一样,为了将牌插入到已排好序的牌中,需要将牌与手中的牌从右向左进行比较。def insertionSort(alist): n=len(alist) fo... 阅读全文
posted @ 2014-06-26 19:54 再见紫罗兰 阅读(1446) 评论(1) 推荐(0) 编辑
摘要: 优先队列(priority queue)是允许至少两种操作的数据结构:Insert及DeleteMin(删除最小者)。相当于队列中的Enqueue、Dequeue操作。优先队列可以用链表、二叉查找树、二叉堆等实现。二叉堆1. 结构性质堆(heap)是一棵完全被填满的二叉树,有可能的例外是在底层,底层... 阅读全文
posted @ 2014-06-25 13:46 再见紫罗兰 阅读(1223) 评论(0) 推荐(0) 编辑
摘要: 散列表的实现常常叫做散列(hashing)。散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的。需要元素间任何排序信息的操作将不会得到有效的支持。散列表是普通数组概念的推广。如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术。当实际存... 阅读全文
posted @ 2014-06-22 04:29 再见紫罗兰 阅读(9445) 评论(0) 推荐(1) 编辑
摘要: 设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。栈中元素设两个域,一个记录元素的值,一个记录栈的最小值。class Stack(object): def __init__(self): ... 阅读全文
posted @ 2014-06-17 22:50 再见紫罗兰 阅读(718) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页