随笔 - 75
文章 - 0
评论 - 190
阅读 -
29万
随笔分类 - 数据结构与算法
浅谈SQL SERVER中的物理联接算法
摘要:联接算法是指在物理上把多个数据源如何联接起来,SQL SERVER支持三种联接算法
1.nested loop 嵌套循环算法
2.merge 合并算法
3.hash 哈希算法
阅读全文
深入 聚集索引与非聚集索引(一)
摘要:有很多人写了聚集索引和非聚集索引的文章,但我觉得在很多文章中表达的概念并不清楚,因此自己也写一篇,能够让自己想清楚。我的最初目的是要写到NO SQL,因此这系列的文章主要是关注在 1.数据库索引结构、2.表联接、3.递归查询这几个点上。
阅读全文
一道简单的面试题,据说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.
阅读全文
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...
阅读全文
基本有序,一次只能确定一个
摘要:提纲:1.在一次比较过程中,我们能确定位置的只有一个元素的位置,在外层循环中体现。比如说在插入排序和选择排序中,外层循环 i 就是已经排好序的元素的个数。那些大于等于 i 的当前的值的的都是等待排序的元素,也就是内层循环 j 需要处理的部分。但是我们能使得数组中的元素“基本有序"基于比较的排序算法,一次只能得出一个结果。最好的情况就是把问题分解成两个1/2的规模,而不是一个1/4,另一个3/4。因为你无法知道你是否处于另一个糟糕的状况之中。因为一次比较只能得出 “大于” 或者 “小于”两个结果,所以底数为log2,而问题的所有解的规模最初是n,当第一轮排序完成后,未排序的元素是n-1
阅读全文
数学归纳法与递归还有斐波那契数列(未完成)
摘要:提纲1.n和n+1的关系结论必须由一个整数n决定结论的定义必须明确,这样我们才可能检验由第n项过渡到下一项也就是n+1的时候,结论是否还能成立。我们期望得到这样一个结果:只要这个结论对n成立,那么对n+1也成立。所以我们要做的有两件事,一是证实结论在取某个值时是正确的,二就是证实取下一个值也是正确的。我们考虑,如果取某个值,那么这个值取什么数好呢?很显然,什么事情我们都希望从最简单的情况出发,因此取1就是我们的选择,也就是n=1。因此n=1时成立,所以n+=1,也就是n=2的时候也成立,同理,n=3的时候也成立。从任意整数过渡到下一个,我们就普遍的证明了这个结论。普遍的证明说明已经遍历了所有情
阅读全文
从两个数组中查找相同的数字谈Hashtable
摘要:我们最直观的就是通过两层for循环来对比每个数组中的数字。因此A数组中的每个元素都会和B数组中的每个元素对比过一次,所以总共要对比的次数是n个n相加(或者是n个m相加),也就是n2(或者为n x m).
阅读全文