概述
Word Frequency作业主要分为几个步骤
1.读取所有文件的内容
2.正确分词
3.排序并输出
为了节省时间,所以我用的都是.net自带的功能,看了一些同学的方法发现各部分的数据结构和实现方法
数据结构:
Hash:用Dictionary,插入删除查找速度快,需要最后手动排序。
平衡树:SortedDictionary,自动排序,但插入删除查找操作比较费时。
其他:KeyedCollection,类似Dictionary。
读取文件内容:
方法1:.net的Directory的GetFiles,参数使用所有子目录,一步获取所有文件,然后再判断扩展名,判断扩展名可用字符串函数或正则表达式
优点:方法简单,实现比较容易
缺点:GetFiles函数实现有问题,在遇到系统目录中的一些特殊情况会出现异常(如权限不足和指向上级目录的链接文件)
方法2:.net的Directory的GetFiles,参数使用当前层,递归获取所有文件,然后再判断扩展名
优点:如果实现较好可避免之前提到的问题
缺点:实现比较复杂
读取时可采用异步IO提升性能。
分词:
方法1:字符串的Split方法
此方法不太好,因为分隔符是除数字和字母外的所有字符,因此分隔符数组会非常大,而且必须保证编码读取正确才能保证结果正确。
方法2:正则表达式
优点:对于需求变动的情况修改非常容易,只需要修改正则的模式。
缺点:正则表达式计算MatchCollection开销很大,字符串过大时效率不高。
方法3:状态机
优点:性能较高,不需记录很多无关的数据和回溯。
缺点:需求变动时需修改状态和条件,容易出错。
排序并输出:
方法1:实现IComparer接口,用系统的排序算法排序。
优点:实现容易,且修改便捷。
缺点:系统默认使用的是快速排序,最坏时间复杂度较高。
方法2:自己实现排序算法
优点:可实现O(nlgn)的排序算法(如归并,堆排序),提高最坏时间复杂度较高。
缺点:实现复杂,占用空间大。
转载于:https://www.cnblogs.com/weiyun/archive/2012/10/19/2731292.html
最后
以上就是清爽柚子为你收集整理的补发:Word Frequency总结的全部内容,希望文章能够帮你解决补发:Word Frequency总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复