示例#1
0
        static void Main(string[] args)
        {
            // 事实上指的是最近一次访问的键,而非访问最频繁的。

            var sr   = new StreamReader(File.OpenRead("tale.txt"));
            var data = sr.ReadToEnd().Split(new char[] { ' ', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            var repeatTimes = 1;

            Console.WriteLine("BinarySearchST");
            Console.WriteLine("Origin\tCached\tRatio");
            long bstTimes = 0, bstcTimes = 0;

            var bst  = new BinarySearchST <string, int>();
            var bstc = new BinarySearchSTCached <string, int>();

            bstTimes  += SearchCompare.Time(bst, data);
            bstcTimes += SearchCompare.Time(bstc, data);
            Console.WriteLine(bstTimes / repeatTimes + "\t" + bstcTimes / repeatTimes + "\t" + (double)bstTimes / bstcTimes);

            Console.WriteLine("SequentialSearchST");
            Console.WriteLine("Origin\tCached\tRatio");
            long sstTimes = 0, sstcTimes = 0;

            var sst  = new SequentialSearchST <string, int>();
            var sstc = new SequentialSearchSTCached <string, int>();

            sstTimes  += SearchCompare.Time(sst, data);
            sstcTimes += SearchCompare.Time(sstc, data);
            Console.WriteLine(sstTimes + "\t" + sstcTimes + "\t" + (double)sstTimes / sstcTimes);
        }
示例#2
0
        static void Main(string[] args)
        {
            var repeatTimes = 20;
            var multiplyBy2 = 5;
            var n           = 2000;

            for (var i = 0; i < multiplyBy2; i++)
            {
                Console.WriteLine("n=" + n);
                Console.WriteLine("Binary\tInterp\tRatio");
                long bstTimes = 0, istTimes = 0;

                for (var j = 0; j < repeatTimes; j++)
                {
                    var bst  = new BinarySearchST <double, int>();
                    var ist  = new InterpolationSearchST();
                    var data = SearchCompare.GetRandomArrayDouble(n);

                    bstTimes += SearchCompare.Time(bst, data);
                    istTimes += SearchCompare.Time(ist, data);
                }
                Console.WriteLine(bstTimes / repeatTimes + "\t" + istTimes / repeatTimes + "\t" + (double)bstTimes / istTimes);
                n *= 2;
            }
        }