- 博客(9)
- 收藏
- 关注
原创 数据库索引有什么作用和好处(原理)
数据库索引是为了增加查询速度而对表字段附加的一种标识。很多人机械的理解索引的概念,认为增加索引只有好处没有坏处。其实远不是那样的,这里将其介绍尽量详细些。 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所...
2011-09-26 16:15:30 198
原创 【EMC笔试题】N个整数中找出三个数,使其和的绝对值最小
转自:http://blog.csdn.net/BusyCai/article/details/6155929 题目描述:给定包含N个数的无序数组S(可能包含负数,0,正数)。求三个数A,B,C,使其和的绝对值最小。 例如:S={-9,0,1,3,6},A=-9,B=3,C=6,MIN=0 算法解析: 解法一:枚举3个数,O(N*N*N) 解法二:对S排序后枚举其中2个...
2011-09-24 15:27:45 298
原创 C++中的new VS C语言中的malloc
动作不同: 在C++中,new一个对象时,程序完成对象的空间的分配的同时,构造函数也被调用,类似,delete一个对象时,对象的空间被释放的同时析构函数也被调用。 在C中,malloc和free 则没有构造函数和析构函数被调用这个动作。当然,在没有特定的构造函数或析构函数时,C++也没有这个动作。 关于重载: 在C++中,对于任何非数组的空间分配,我们可以通过定义函数名相同...
2011-09-22 21:26:31 144
原创 Java编译过程与c/c++编译过程有何不同
Java编译原理 1、Java编译过程与c/c++编译过程不同 Java编译程序将java源程序编译成jvm可执行代码--java字节码. c/c++编译过程: 当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而生成的。因此在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。 Java编译过程: Java编译器却不将对变量和方法的...
2011-09-18 14:16:25 76
k路已排序链表的合并O(nlgk)
题目:请给出一个时间为O(nlgk)、用来将k个已排序链表合并为一个排序链表的算法。此处n为所有输入链表中元素的总数。 (机械工业出版社 《算法导论》P82 6.5-8) 这是网上找到一个解答: 1.把每个已排序链表的第一个值取下,构建一个k个元素的最小堆。 2.找到最小元素原来的链表,从中取下第二个元素,插入最小堆。 3.接着找到当前最小元素原来的链表,从中取下下一个元素,插入...
2011-09-12 13:09:34 317
O(nlgn)的Josephus环解法
Josephus问题的定义如下:假设n个人排成环形,且有一正整数m<=n。从某个指定的人开始,沿环报数。每遇到第m个人就让其出列,且报数进行下去,这个过程直到所有人都出列为止。假设m不是常数。请描述一个O(nlgn)时间的算法,使给定的整数n和m,输出(n,m)-Josephus排列。 解法:使用顺序统计树(order-statistic tree),顺序统计树的插入、删除的时间复杂...
2011-09-09 22:44:11 75
原创 不用栈实现二叉树非递归中序遍历
有个二叉树,每个节点除了左右指针外,还有一个指向父节点的指针。要求不用递归,中序遍历这棵树。另要求空间复杂度是O(1). 空间复杂度为O(1),摆明就是不让用堆栈模拟递归,所以想了想思路,也请教过好几个朋友,大家都基本想法都差不多,由于有指向父节点的指针,必定可以回溯,从而可以不需要堆栈来做记录. view plain /*思路: 关于终止条件:...
2011-09-09 21:18:18 315
原创 浅谈垃圾收集
垃圾收集是程序自动发现和回收应用程序不再使用或不能访问的内存的过程。这种回收过程不需要程序员的参与。 与程序员显式地释放内存相比,垃圾收集提供了几点好处。它消除了悬挂指针和内存泄露。它也使得接口设计和编程变得更简单,因为不再需要传统上用于确保内存正确释放的机制(如C++中的“智能指针”)。另外,因为程序员不必担心内存释放,程序开发就能够更快地进行。 但是,垃圾惧也不是没有缺点...
2011-09-09 16:36:49 52
原创 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区
转自:http://www.cppblog.com/prayer/archive/2009/08/17/93591.html 一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化...
2011-09-01 17:23:56 64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人