// 绝大部分单词都位于符号表的中部,因此二分查找所需的时间较少。 static void Main(string[] args) { var n = 8000; var multiplyBy2 = 5; var repeatTimes = 5; double lastTime = -1; Console.WriteLine("n\ttime\tratio"); for (var i = 0; i < multiplyBy2; i++) { Console.Write(n + "\t"); long timeSum = 0; for (var j = 0; j < repeatTimes; j++) { var st = new BinarySearchST <string, int>(); var sw = Stopwatch.StartNew(); FrequencyCounter.MostFrequentlyWord("tale.txt", n, 0, st); sw.Stop(); timeSum += sw.ElapsedMilliseconds; } timeSum /= repeatTimes; Console.Write(timeSum + "\t"); if (lastTime < 0) { Console.WriteLine("--"); } else { Console.WriteLine(timeSum / lastTime); } lastTime = timeSum; n *= 2; } }
static void Main(string[] args) { // 删除末尾的版权许可: Monseigneur // 不删除末尾的版权许可:Gutenberg-tm // tale.txt:https://introcs.cs.princeton.edu/java/data/tale.txt var st = new ST <string, int>(); var most = FrequencyCounter.MostFrequentlyWord("tale.txt", 10, st); Console.WriteLine(most); }
static void Main(string[] args) { var n = 1000000; var m = 10; var addBy10 = 3; for (var i = 0; i < addBy10; i++) { var bst = new BinarySearchSTAnalysis <long, int>(n); var data = SearchCompare.GetRandomArrayLong(n, (long)Math.Pow(2, m), (long)Math.Pow(2, m + 1)); FrequencyCounter.MostFrequentlyKey(bst, data); Console.WriteLine("m=" + m + "\t" + bst.GetTimer.ElapsedMilliseconds + "\t" + bst.PutTimer.ElapsedMilliseconds + "\t" + bst.PutTimer.ElapsedMilliseconds / (double)bst.GetTimer.ElapsedMilliseconds); m += 10; } var st = new BinarySearchSTAnalysis <string, int>(); FrequencyCounter.MostFrequentlyWord("tale.txt", 0, st); Console.WriteLine("tales\t" + st.GetTimer.ElapsedMilliseconds + "\t" + st.PutTimer.ElapsedMilliseconds + "\t" + st.PutTimer.ElapsedMilliseconds / (double)st.GetTimer.ElapsedMilliseconds); Console.ReadLine(); }