- 博客(9)
- 资源 (7)
- 收藏
- 关注
转载 当今世界最受人们重视的十大经典算法
当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重的十大算法,你会作何选择列?最近,有人在StackExchange上发起了提问,向网友们征集当今世界最为经典的十大算法。众人在一大堆入围算法中进行投票,最终得出了呼声最高的以下十个算法。来自圣经的十大算法:发起人的描述:《来自圣经的证明》收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧
2012-11-17 14:02:16 3419
原创 Dijkstra、Bellman_Ford、SPFA、Floyd算法复杂度比较
Dijkstra:适用于权值为非负的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV)BellmanFord:适用于权值有负值的图的单源最短路径,并且能够检测负圈,复杂度O(VE)SPFA:适用于权值有负值,且没有负圈的图的单源最短路径,论文中的复杂度O(kE),k为每个节点进入Queue的次数,且k一般但此处的复杂度证明是有问题的,其实SPFA的最坏情况应该是O(VE).Flo
2012-11-17 13:56:41 39380 3
原创 堆排序的最坏运行时间和最优运行时间
1964年Williams发明的,1992年Sedgewick发表了堆排序性能分析 "The analysis of heapsort"。所以求堆排序的最优运行时间比较难。一、最坏运行时间由于前面已经证明了:在n个元素的堆中,MAX-HEAPIFY的最坏运行时间为Ω(lgn)。如果要求堆排序的最坏运行时间,则可以假设每次MAX-HEAPIFY都是最坏
2012-11-17 13:23:39 19228 1
原创 割点、割边、双连通分支
一、割点、割边、双连通分支概念挂接点(Articulation point)就是割点(Cut Vertex)桥(Bridge)就是割边(Cut Edge)割点:v为割点,则去掉v后,图的连通分支增加。割边:v为割边,则去掉v后,图的连通分支增加。割点形式化的定义:a是割点当且仅当存在两个点u,v使得u到v的每条路径都会经过a。(去掉a后,u到v没有路径)边双
2012-11-06 13:26:18 5226
原创 第六章:堆排序
一、堆的基本概念一般我们讲的堆都是二叉堆。二叉堆简单地来说就是一个完全二叉树。完全二叉树:从左到右、从上到下塞满的一颗二叉树。满二叉树:每层都塞满的二叉树。堆分为大根堆(每个父亲都比儿子大,其中根为最大的元素)、小根堆(每个父亲都比儿子小,其中根为最小的元素)。某个节点的高度为从该节点到叶子节点经过的路径的长度,比如叶子节点的高度为0。d叉堆:一
2012-11-04 20:43:42 1575
原创 \r与\n的区别
\r : return 到当前行的最左边。\n: newline 向下移动一行,并不移动左右。Linux中\n表示回车+换行;Windows中\r\n表示回车+换行。Mac中\r表示回车+换行。历史:回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。 在计算机还没有出现之 前,有一种叫做电传打字机(Teletype
2012-11-04 14:16:41 78701 2
原创 Java实现内联函数
C++是否为内联函数由自己决定,Java由编译器决定。Java不支持直接声明为内联函数的,如果想让他内联,则是由编译器说了算,你只能够向编译器提出请求。final除了不能被override外,还可能实现内联。如果函数为private,则也可能是内联的。总的来说,一般的函数都不会被当做内联函数,只有声明了final后,编译器才会考虑是不是要把你的函数变成内联函数。
2012-11-03 15:46:12 5942
原创 ArrayList 源码分析
在我们刚学Java时老师一定会说ArrayList是很好用的变长数组,你只要尽管插入删除就可以了,比C++的数组控制简单多了,ArrayList是典型的自增长数组。private int size; //数组中实际元素的数量capacity表示数组的总大小,比如arr = new int[5],则capacity=5.//initialCapacity为初始的数组大小
2012-11-03 13:10:46 2014
Struts国际化源代码
2012-01-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人