
数据结构与算法
遨游网络huster
这个作者很懒,什么都没留下…
展开
-
最小生成树之prim算法
最小生成树之prim算法边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。 构造网的最小生成树必须解决下面两个问题: 1、尽转载 2014-01-17 20:38:08 · 1047 阅读 · 1 评论 -
浮点数字符串转换成浮点数实现
之前面试的时候,常给面试者出的一个面试题目是,给定一个字符串,输出该字符串表示的浮点数的值,要求如下: 写一个转换函数,该函数的输入是一个表示浮点数的字符串,把该字符串转换成浮点数并输出。条件:请考虑各种情况,并且代码中的循环尽量少,不能调用API或者crt库中的函数。例如:输入字符串"345.7",则输出浮点数345.7。接口可以为:float StrToFloatA(TCHA转载 2014-11-24 12:59:18 · 1683 阅读 · 0 评论 -
优快云高校俱乐部编程挑战群一道仅有7人通过的超5星微软比赛题目-------解题思路&优秀代码分享
今天在优快云高校俱乐部编程挑战群里面看到了一道据说只有7个人通过的高难度比赛题目,我试着做了一下,但是发现程序效率太低而且只有部分测试用例可以得出正确结果。后来看了题目解析和示例代码,对两种解题思路进行了比较,发现第二种解法更容易理解。现在把题目和代码转载于此,和大家分享: 原文地址:http://student.youkuaiyun.com/mcd/topic/235300/937958转载 2014-11-26 23:00:25 · 1271 阅读 · 0 评论 -
平衡二叉搜索树(AVL树)的原理及实现源代码(有图文详解和C++、Java实现代码)
这几天学习了AVL树(平衡二叉搜索树),遂写一篇总结与大家分享。包括五个部分:一、AVL树(平衡二叉搜索树)是什么?二、为什么要用AVL树?三、AVL树的实现原理四、完整的实现代码(C++和Java)五、测试程序分析原创 2014-11-22 21:46:12 · 6142 阅读 · 3 评论 -
位运算之美——用+,-和位运算实现正整数除法和取模(一)
作者:翼帆@cppblog 原文地址:http://www.cppblog.com/xiaoyisnail/archive/2009/09/19/96707.html 今天看了一位师兄去年的笔经总结,其中有一题是“不许用%和/来实现求任意数除以3的余数”,我想考官的目的应该是想考察学生对位运算的熟悉程度吧,于是我把题目扩展成“只能用+,-和位运算实现正整数除法(/)转载 2014-11-26 22:41:57 · 973 阅读 · 0 评论 -
位运算之美——用+,-和位运算实现正整数除法和取模(二)
作者:翼帆@cppblog 原文地址:http://www.cppblog.com/xiaoyisnail/archive/2009/09/21/96883.html 终于有时间写本文的第二部分了。在上一篇文章(下文中称为“文(一)”)中,我提出了一个具体的问题“只能用+,-和位运算实现正整数除法(/)和取模(%)”,并整理了一些和位运算相关的题目和算法,本文将给出转载 2014-11-26 22:44:21 · 1085 阅读 · 0 评论 -
伸展树的原理及实现源代码(有图文详解和C++实现代码)
伸展树的原理及实现源代码(有图文详解和C++实现代码)伸展树(Splay Tree)是一种二叉搜索树,它能在O(log n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。它的优势在于不需要记录用于平衡树的冗余信息。在伸展树上的一般操作都基于伸展操作。 为什么需要伸展树(Splay Tree) 各种二叉搜索树存在不足。比如:对于一个有n个节点的平衡二叉搜索树,虽然最坏情况下每次查找的时间复杂度不会超过O(logn),但是如果访原创 2014-11-25 15:38:29 · 4389 阅读 · 0 评论 -
线段树的实现及其经典用法(C++实现)
线段树的实现及其经典用法(C++实现)一、线段树的定义 首先,线段树是一棵完全二叉树。它的特点是:每个结点表示的是一个线段,或者说是一个区间。事实上,一棵线段树的根结点表示的是“整体”区间,而它的左右子树也是一棵线段树,分别表示区间的左半边和右半边。树中的每个结点表示一个区间[a,b]。每一个叶子结点表示一个单位区间。对于每一个非叶结点所表示的结点[a,b],其左孩子表示的区间为[a,(a+b)/2],右孩子表示的区间为[(a+b)/2,b]。 用T(a, b)表示一棵线段树,参数a,b表示区间[原创 2014-11-25 21:25:19 · 7028 阅读 · 1 评论 -
linux中的优先搜索树的实现--prio_tree
原文地址:http://blog.youkuaiyun.com/dog250/article/details/5700317转载 2014-10-11 22:55:02 · 829 阅读 · 0 评论 -
从B 树、B+ 树、B* 树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.youkuaiyun.com/v_JULY_v 。 第一节、B树、B+树、B*转载 2014-09-19 16:40:58 · 658 阅读 · 0 评论 -
优先队列三大利器——二项堆、斐波那契堆、Pairing 堆
原文地址:http://dsqiu.iteye.com/blog/1714961 这篇博文主要介绍二项堆、斐波那契堆、Pairing 堆,都知道只要这三个结构应用实现优先队列的,讲解还是比较详细,参考了很多资料,尤其是Pairing堆很少有讲解,但还是力所能及的写了,虽然可能正确很难保证,其次就是斐波那契堆我对于减小一个关键字的操作的级联剪枝不是很理解(不知道为什么要这么做转载 2014-01-20 16:49:00 · 1429 阅读 · 1 评论 -
求单源最短路径的Dijkstra算法分析与实现
今天看算法导论上的Dijkstra算法,其本质思想就是一个贪心策略。我使用节点的编号来维持最小优先队列,每次取集合V-S中节点值最小的点加入S。时间复杂度为n的平方(n为图的节点数)。书上说如果是稀疏图,用二叉堆或者斐波那契堆实现可以降低时间复杂度,这个我没有验证。 下面给出我的源代码:#include #include #include using namespace std原创 2014-01-19 15:11:44 · 1390 阅读 · 0 评论 -
我的算法学习之路
今天看完了一篇转载 2014-11-24 18:32:58 · 770 阅读 · 0 评论