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); }
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; } }