图文并茂。Dijkstra算法求某一个源点到其余各顶点时间复杂度是O(n^2),但如果采用此算法,找从某一源点到某一特定终点的最短路径,复杂度仍为O(n^2)。
求每一对顶点之间的最短路径:
(1)每次以一个顶点为源点,重复执行Dijkstra算法n次。总的时间复杂度是O(n^3);
(2)弗洛伊德(Floyd)算法:时间复杂度也是O(n^3),但形式上更简单。...
分类:
其他好文 时间:
2014-06-10 07:03:14
阅读次数:
279
众所周知,Std::sort()是一个非常快速的排序算法,它基于快排,但又有所修改。一般来说用它就挺快的了,代码一行,时间复杂度O(nlogn)(难道不是大叫一声“老子要排序!!”就排好了么。。。)。我们也知道,不基于比较的排序可以达到O(n),比如说基数排序。什么,它是O(n
* log(10.....
分类:
其他好文 时间:
2014-06-10 00:04:07
阅读次数:
326
字典树:
字典树 即Tire树,以一个空的头结点分若干的分支,来存放数据,虽浪费了大量内存,但是查找速度非常快。
匹配 时间复杂度 O(n) n = strlen(a);
字典树分 3步,建树、插入、查找
当然有时候,建树的选择是很重要的一点,尽量本着少往字典树上添加节点的原则,容易爆!!!
列入下面这题,用m建树,n来查找,即可AC,如果用n来建...
分类:
其他好文 时间:
2014-06-09 23:42:44
阅读次数:
295
并查集总结
今天总结一下并查集,这个完了之后,寒假学的数据结构基础的模板类的题目差不多就完了,对于模板题,敲上10遍、20遍、30遍,那么模板
就不是模板,就成为了你自己的东西,就好像 A+B 一辈子也忘不了,以后每天敲一遍模板题,加深对模板的理解。
并查集,一般使用的是 数组实现、树实现,其中数组实现时间复杂度较高,树实现也就是分离集合森林 查找、合并的时间复杂度不会...
分类:
其他好文 时间:
2014-06-09 23:14:04
阅读次数:
204
Sort a linked list in O(n log n) time using
constant space
complexity.一谈到时间复杂度O(nlogn),立即联想到以下3种排序方法:1.归并排序(基于分治):时间复杂度O(nlogn),归并排序的最好、平均、最坏时间复杂度没有差别...
分类:
其他好文 时间:
2014-06-09 20:37:31
阅读次数:
244
一元一次方程的一般形式是$ax+b=0$,很容易解得$x=-\frac{b}{a}$。对于一元二次方程,也有一个简单的求根公式可以解出方程的根。但是一元三次方程的求根公式较为复杂,需分情况,编写程序的复杂度比前两个要大得多。你可能已经听说过二分查找法,在已排序的数组中查找某一个数的时间复杂度从$O(...
分类:
其他好文 时间:
2014-06-09 12:59:47
阅读次数:
323
第一种方法,暴力求解,从当前向左右两个方向扫描比自己小的,然后计算面积,时间复杂度O(n^2)code如下,但是在LeetCode上回超时。
1 class Solution { 2 public: 3 int largestRectangleArea(vector &height) {
4...
分类:
其他好文 时间:
2014-06-08 21:24:07
阅读次数:
328
字符串匹配这也是个老题了,方法主要有下面4种,
1. 暴利破解法(BF),这个没啥说的,就是一轮一轮的比较,知道遇到相匹配的,这个的时间复杂度为O(n^2)。
2. KMP,这应该是字符串匹配领域中最长听说的算法了吧。
3. Horspool算法,这个不常听说,但是也是很有名的。
4. Boyer-Moore,这个听说过的人应该也不会很多,这个算法在大量字符串的情况下,效率是最高的,能达到kmp的3到4倍。
上面四种算法都很重要,一般标准库中的字符串匹配都使用的是暴力法。
上面四种算法详细的见我下面的这几篇...
分类:
其他好文 时间:
2014-06-08 03:19:54
阅读次数:
187
原文:浅谈算法和数据结构: 九
平衡查找树之红黑树前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数...
分类:
其他好文 时间:
2014-06-07 20:18:15
阅读次数:
364
原文:浅谈算法和数据结构: 四
快速排序上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick
Sort)。快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交...
分类:
其他好文 时间:
2014-06-07 20:15:43
阅读次数:
362