摘要:
上式是网络的平均路径长度,其中包括了节点到自身的路径(这个路径始终为0)。如果不算到自身的情况,则分母下应该是N(N-1)/2。这个N(N+1)/2也很好解释。用循环的形式表示如下:for(i=1;i<=N;i++) { for(j>=i;j<=N;j++{ }}内层循环的执行次数为N+N-1+N-2+...+1 = N(N+1)/2。刚才脑袋短路了,特小记一下。 阅读全文
2011年5月7日
摘要:
摘自某公司的笔试题目,挺有意思的。不过不大实用,效率问题。int whatido(char * str){ return *str ? whatido(++str)+1 : 0;} 阅读全文
2011年5月5日
摘要:
这两个库都是由同一个新加坡人写的,其中BasicExcel推出时间较晚,也是为了改善CSpreadSheet的诸多缺点而推出的一个跨平台版本(原生Excel支持,作者说对参考的是OpenOffice的Excel格式文档)。CSpreadSheet对中文支持很好,所以根本就没有WString,AString等转换问题。但是它有几足以让人放弃使用它的缺点:速度慢。写入数据都是字符串格式。为了防止自动类... 阅读全文
2011年4月27日
摘要:
堆排序是一个非常有名的nlogn排序算法,而且是在位的(不需要额外的存储空间)。以前就在数据结构课程中学习过,并没有深入了解它。很汗颜今天我才第一次去实现这种算法,也这才感受到它的高效与优雅。贴出了完整代码,各位看官如果发现什么BUG或者有什么建议,欢迎提出。 1 #include <stdio.h> 2 3 #define HEAP_SIZE 10 4 5 void heap_bottom_up(int H[], int n); 6 bool delete_heap_root(int H[], int &n); 7 void print_heap(int H[], int 阅读全文
2011年4月26日
摘要:
1#include<stdio.h>23#defineLEFT-14#defineRIGHT156intget_max_moveable_index(intarray_direction[],intarray_permutation[],intnum_of_ints);7voidjohnson_trotter(intn);8voidswap_array(intarray[],inti,intj);9voidprint_permutation(intvalue_table[],intdirection_table[],intnumber_of_ints);10intmain(){11 阅读全文
摘要:
一个有向图的DFS森林可能具有的全部类型的边:树向边、回边、从顶点到树中非子女子孙的前向边、交叉边。所有不属于前三种类型的边都属于交叉边。一条回边的存在意味着有向图具有一个有向的回路。如果一个有向图的DFS森林没有回边,该有向图是一个无环有向图,即有向无环图的简称。拓扑排序:按某种次序列出有向图中的顶点,使得对于图中每一条边来说,边的起始顶点总是排在边的结束顶点之前。这个问题称为拜年排序。拓扑排序的两个算法:1,DFS。执行一次DFS遍历,并记住顶点变成死端(即退出遍历栈)的顺序。将该顺序反过来就得到了拓扑排序的一个解。当然,在遍历的时候不能遇到回边。如果遇到一条回边,该图就不是无环有向图,并 阅读全文
2011年4月25日
摘要:
对n个预排序点的运行时间,有以下递推式:T(n) = 2T(n/2) + M(n)应用针对O的主定理(其中 a=2, b=2, d=1),我们得到T(n) 的时间复杂度为O(n logn)。 阅读全文
2011年4月21日
摘要:
1,决定用哪个(哪些)参数作为输入规模的度量。2,找出算法的基本操作(作为一个规律,它总是位于算法的最内层循环中)。3,检查基本操作的执行次数是否只依赖输入规模。如果它还依赖一些其他的特性,则最差效率、平均效率以及最优效率(如有必要)需要分别研究。4,建立一个算法基本操作执行次数的求和表达式。5,利用求和运算的标准公式和法则来建立一个操作次数的闭合公式,或者至少确定它的增长次数。摘自:《算法分析与... 阅读全文
2011年4月20日
摘要:
二叉查找树:分配给每个父母顶点的数字都比它左子树的数字大,比右子树中的数字小。二叉查找树能够推广为一种更一般的查找树,称为多路查找树,这种结构对于磁盘上超大型文件的高效存储是必不可少的。 阅读全文