摘要: 首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。此外,算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。但是我们总是考虑在最坏的情况下的时间复杂度。以保证算法的运行时间不会比它更长。常见的时间复杂度,按数量级递增排列依次为:常数阶O 阅读全文
posted @ 2013-09-27 13:02 空城夕 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 贪心算法:1)最小生成树两种方法: 1,Prim算法 选择某一点作为起点,逐步联通 2,Kruskal算法 选择权最小的边,逐步联通2)哈夫曼编码http://www.thecodeway.com/blog/?p=870 哈夫曼编码3)单源最短路径 阅读全文
posted @ 2013-09-25 10:47 空城夕 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2.栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。3.Java中的数据类型有两种。一种是基本类型(primitivetypes),共有8种,即int,short,long,byte 阅读全文
posted @ 2013-09-24 22:31 空城夕 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 1)tree2) queue3) list4) stack5) heap6) map 阅读全文
posted @ 2013-09-24 21:31 空城夕 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 问题描述:18世纪,东普鲁士(今日的德国)的哥尼斯堡(现今叫加里宁格勒,在波罗的海南岸)是一座景致迷人的城市,也是一个在战争中双方必争的战略要地。普勒格尔河横贯其境,并在这儿形成两条支流,把整座城市分割成4个区域(见投影):河的两岸(A和B),河中的岛(克那伊波夫岛)(C)和两条支流之间的半岛(D)。当时有七座桥横跨普勒格尔河及其支流,把河岸、半岛和河心岛连接起来。有趣的桥群和哥城4区的迷人景色吸引了众多的游客,有人在游览时提出这样的问题:能否从某个地方出发,穿过所有的桥各一次后再回到出发点。这个问题在街头流传着,但没有人能回答它。这就是七桥问题,一个著名的图论问题。解答:一个图形可以一笔画, 阅读全文
posted @ 2013-09-23 23:26 空城夕 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 1GC类型1 )YGC一般情况下,当新对象生成,并且在Eden申请空间失败时,就好触发YGC,堆Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区。然后整理Survivor的两个区。2) FullGC对整个堆进行整理,包括Young、Tenured和Perm。FullGC比ScavengeGC要慢,因此应该尽可能减少FullGC。2GC触发条件GC类型触发条件触发上下文YGCeden空间不足清空Eden+fromsurvivor中所有noref的对象占用的内存将eden+fromsur中所有存活的对象copy到tosur中一些对象将晋升到old中:tosur放不 阅读全文
posted @ 2013-09-22 23:37 空城夕 阅读(1151) 评论(0) 推荐(1) 编辑
摘要: http://www.cnblogs.com/kangyoung/articles/2169185.html 很好 阅读全文
posted @ 2013-09-22 12:20 空城夕 阅读(124) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/doc_sgl/article/details/11695671 阿里巴巴2014校招笔试题-2013年9月14日 答案部分有出入 阅读全文
posted @ 2013-09-22 12:15 空城夕 阅读(114) 评论(0) 推荐(0) 编辑
摘要: vector适用:对象数量变化少,简单对象,随机访问元素频繁list适用:对象数量变化大,对象复杂,插入和删除频繁最大的区别是,list是双向的,而vector是单向的。因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则: 1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector 2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list 3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。vector 表示一段连续的内存区域,每个元素被顺序存储在这段内存中,对vector 的随机访问效率很高,但对非末尾元素的插 阅读全文
posted @ 2013-09-22 08:42 空城夕 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.cnblogs.com/dkblog/archive/2011/08/30/2160191.htmlLinux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS)运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式运行级别4:系统未使用,保留运行级别5:X11控制台,登陆后进入图形GUI模式运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动运行级别的原理:1。在目录/ 阅读全文
posted @ 2013-09-21 23:40 空城夕 阅读(163) 评论(0) 推荐(0) 编辑