第二次作业

Posted clairewyd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次作业相关的知识,希望对你有一定的参考价值。

  本次作业采用c#语言进行编程。主要功能包括:

  1)在指定文件中进行输入,之后运行程序进行词频统计。

  2)输入文件夹中的文件名,并对其进行词频统计

  3)对指定目录遍历其中文件,对每一个文件进行词频统计,并输出前10个出现率最高的单词

  4)在控制台输入文本内容,并统计它的词频。

  各个功能调用的主要函数都有很大部分的重叠,如都调用了CountEachWord方法,对此主要函数进行说明:

   1. CountEachWord(string url,int choice)划分文件中的单词,在这个程序中凡是一字母开头的文本算是一个单词,如1a不算是单词,但是a1算是一个单词。程序中使用了正则表达式进行匹配单词项,使用regex中的Matches方法得到一个单词Match集合,并将其存储到忽略大小写的hashtable中。

            int count = 0;  //单词总数统计变量
            StreamReader streamReader = new StreamReader(url);
            string line;
            Regex regex = new Regex(@"\b[A-Za-z]+[A-Za-z0-9]*");
            while ((line = streamReader.ReadLine()) != null)
            {

                MatchCollection matchCollection = regex.Matches(line);
                foreach(Match word in matchCollection)
                {
                    string words = word.ToString();
                    if (hashtable.Contains(words))
                    {
                        int j = Convert.ToInt32(hashtable[words]) + 1;
                        hashtable[words] = j;
                    }
                    else
                    {
                        hashtable.Add(words, 1);
                    }
                }
            }
            //输出文章中不重复的单词总数
            count = hashtable.Keys.Count;
            Console.WriteLine("total: " + count);

  2. 对hash表中的单词数从大到小进行排序。先将hashtable中的键(单词)和值(单词频率)存储到数组,以数组索引值为链接。使用了快速排序。快速排序的时间复杂度为O(nlogn)

            ArrayList arrayList = new ArrayList(hashtable.Keys);
            string[] keyArray = new string[arrayList.Count];
            int[] valueArray = new int[arrayList.Count];
            int index = 0;
            foreach(string key in arrayList)
            {
                //keyArray[index] = key;
                keyArray[index] = Convert.ToString(key);
                valueArray[index] = Convert.ToInt32(hashtable[key]);
                index++;
            }
            //快速排序递归算法
            QuickSort(valueArray,keyArray, 0, arrayList.Count - 1);

 

以上是关于第二次作业的主要内容,如果未能解决你的问题,请参考以下文章

第二次在对话框中膨胀片段时出错

第二次作业电梯编程题测试结果

第二次作业

第二次作业

OO第二次博客作业

第二次作业——题目一