随笔分类 -  数据结构与算法

浅谈SQL SERVER中的物理联接算法
摘要:联接算法是指在物理上把多个数据源如何联接起来,SQL SERVER支持三种联接算法 1.nested loop 嵌套循环算法 2.merge 合并算法 3.hash 哈希算法 阅读全文
posted @ 2012-08-18 00:40 一路转圈的雪人 阅读(2794) 评论(14) 推荐(14) 编辑
深入 聚集索引与非聚集索引(一)
摘要:有很多人写了聚集索引和非聚集索引的文章,但我觉得在很多文章中表达的概念并不清楚,因此自己也写一篇,能够让自己想清楚。我的最初目的是要写到NO SQL,因此这系列的文章主要是关注在 1.数据库索引结构、2.表联接、3.递归查询这几个点上。 阅读全文
posted @ 2012-08-05 14:19 一路转圈的雪人 阅读(18320) 评论(11) 推荐(27) 编辑
一道简单的面试题,据说90%人不能在30分钟内做出来
摘要:不知道是不是我引起的话题,老赵出了个O1的面试题。 // Please write an sequence list implements the interface with the required // time complexity described in the comments. The users can add the same // element as many times as they want, but it doesn't support the null item. // You can use any types in .NET BCL but cannot use any 3rd party libraries. // PS: You don't need to consider the multi-threaded environment. 阅读全文
posted @ 2012-03-30 12:13 一路转圈的雪人 阅读(5607) 评论(20) 推荐(4) 编辑
Dictionary源码解析(未完)
摘要:private void Insert(TKey key, TValue value, bool add){ if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } if (this.buckets == null) { this.Initialize(0); } int num = this.comparer.GetHashCode(key) & 2147483647; int num2 = num % t... 阅读全文
posted @ 2012-02-21 20:28 一路转圈的雪人 阅读(766) 评论(0) 推荐(0) 编辑
基本有序,一次只能确定一个
摘要:提纲:1.在一次比较过程中,我们能确定位置的只有一个元素的位置,在外层循环中体现。比如说在插入排序和选择排序中,外层循环 i 就是已经排好序的元素的个数。那些大于等于 i 的当前的值的的都是等待排序的元素,也就是内层循环 j 需要处理的部分。但是我们能使得数组中的元素“基本有序"基于比较的排序算法,一次只能得出一个结果。最好的情况就是把问题分解成两个1/2的规模,而不是一个1/4,另一个3/4。因为你无法知道你是否处于另一个糟糕的状况之中。因为一次比较只能得出 “大于” 或者 “小于”两个结果,所以底数为log2,而问题的所有解的规模最初是n,当第一轮排序完成后,未排序的元素是n-1 阅读全文
posted @ 2012-02-16 20:37 一路转圈的雪人 阅读(294) 评论(0) 推荐(0) 编辑
数学归纳法与递归还有斐波那契数列(未完成)
摘要:提纲1.n和n+1的关系结论必须由一个整数n决定结论的定义必须明确,这样我们才可能检验由第n项过渡到下一项也就是n+1的时候,结论是否还能成立。我们期望得到这样一个结果:只要这个结论对n成立,那么对n+1也成立。所以我们要做的有两件事,一是证实结论在取某个值时是正确的,二就是证实取下一个值也是正确的。我们考虑,如果取某个值,那么这个值取什么数好呢?很显然,什么事情我们都希望从最简单的情况出发,因此取1就是我们的选择,也就是n=1。因此n=1时成立,所以n+=1,也就是n=2的时候也成立,同理,n=3的时候也成立。从任意整数过渡到下一个,我们就普遍的证明了这个结论。普遍的证明说明已经遍历了所有情 阅读全文
posted @ 2012-02-16 20:34 一路转圈的雪人 阅读(806) 评论(0) 推荐(0) 编辑
从两个数组中查找相同的数字谈Hashtable
摘要:我们最直观的就是通过两层for循环来对比每个数组中的数字。因此A数组中的每个元素都会和B数组中的每个元素对比过一次,所以总共要对比的次数是n个n相加(或者是n个m相加),也就是n2(或者为n x m). 阅读全文
posted @ 2012-02-15 23:25 一路转圈的雪人 阅读(9209) 评论(6) 推荐(4) 编辑