随笔分类 - 算法
摘要:习惯在C#代码中写str+="xxx";这样代码的请注意啦,如果这种操作是针对单个变量作很多次叠加操作的,很有可能导致性能降低。大家都知道string与StringBuilder的区别,这里就不说了,来看看例子,震撼一下:分别是测试普通字符串进行5w次叠加操作 vs StringBuilder进行5...
阅读全文
摘要:考虑到sql server以及c#,最多只能用decimal类型,也就是29位的数字,做了下面这个数字型id生成器:class Program { static void Main(string[] args) { int i = 100000; Timing t = new Timing(); t.Start(); while(i-->0) UniqueIdGenerator.Next(); t.Stop(); ...
阅读全文
摘要:我们来比较下散列的3种冲突解决方式,建立3个类,分别代表3种不同的冲突解决方式:MyHash_MAD_多槽位MyHash_MAD_独立链MyHash_MAD_线性探测法然后在主程序中分别插入10000条记录,比较各自所需要的时间。先介绍下:MAD:multiply-add-divide method,乘法 - 加法 - 除法(取模),如下这个公式是散列核心公式(a*collisionIndex+b)%M, M要求是素数,a, b的取值要合理冲突解决方式:多槽位当计算出的Index位置处已经被占用后,还是会在这个index的地方增加一个元素主数组的每个元素是个列表(比如每个元素都能放5个子元素)
阅读全文
摘要:有想过hash["A1"] = DateTime.Now;这句是怎么实现的吗?我们来重温下学校时代就学过的哈希算法吧。我们要写个class,实现如下主程序调用:static void Main(string[] args) { MyHash hash = new MyHash(); hash["A1"] = DateTime.Now; hash["A2"] = 1; Console.WriteLine(Convert.ToString(hash["A1"])); Cons...
阅读全文