随笔分类 -  算法导论补完计划

动态顺序统计、区间树、线段树、树状数组、数据离散化
摘要:1、动态顺序统计顺序统计指的是两个操作: select(index,set)//找出集合中第index大的元素 rank (e, set) //给定一个元素,判断它在集合中排第几动态顺序统计指的就是这个数据集合是会变动的,对于数据集合不会变动的情况,最好的方法自然是先排序,然后用二分查找实现... 阅读全文

posted @ 2015-12-21 17:17 远近闻名的学渣

二叉搜索的正确姿势
摘要:一般来说,二叉搜索是这样实现的: 然而这样是非常不合理,第一,left、right用到了左移操作,左移操作对于有符号数,最左添0还是添符号位,在c++里是未定义行为(不过在这里left、right一般大于0,所以符号位就是0),left、right、mid应该用无符号类型,这样可以保证不会溢出,如果 阅读全文

posted @ 2015-10-13 19:15 远近闻名的学渣

Floyd算法
摘要:Floyd算法是求任意图中任意两个节点的最短路径的算法,一般认为Floyd算法使用了动态规划策略。即对任意一条最短路径u ~v, 假如k在该路径中,则改最短路径可以表示为u ~k~v。设Di,j,k为从i到j的只以(1..k)集合中的节点为中间节点的最短路径的长度。若最短路径经过点k,则Di,j,k... 阅读全文

posted @ 2015-07-03 20:21 远近闻名的学渣 阅读(300) 评论(0) 推荐(0)

堆以及优先队列
摘要:堆分为大根堆与小根堆,这里以大根堆为例。PS:这里的堆只涉及二叉堆,斐波那契堆什么的。。智商不够并不能学会- - !定义: 二叉堆通常是一个用数组实现的完全二叉树。并且大根堆满足对于任何一颗子树,其孩子节点的key总是不会比根节点的大。所以堆顶元素(即树根)就是key最大的元素。堆应该支持的操作:... 阅读全文

posted @ 2015-07-03 18:50 远近闻名的学渣 阅读(366) 评论(0) 推荐(0)

Dijkstra算法
摘要:Dijkstra算法是基础图论中非常重要的算法。算法能够算出某一个点到图中其他任何点的最短路劲及其权重,要求图中所有的边的权重都是非负值。算法中需要用到优先队列,优先队列的操作看这里算法维护两个顶点集合S,Q,以及一个估计最短路径数组d,d[i]值表示从源点到顶点i的估计最短路径。任意时刻d[i]都... 阅读全文

posted @ 2015-07-03 01:07 远近闻名的学渣 阅读(1516) 评论(0) 推荐(0)

导航