// 绝大部分单词都位于符号表的中部,因此二分查找所需的时间较少。
        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();
        }