个人文档第一版第二部分

3.24

10:40 emmmm 拖延来拖延去总算开始了 先看看群里的问题

突然发现了单元测试 我真不知道是啥来的 赶快看看吧

哦我的天哪 我感觉单元测试是一个很强大的东西 我一定得用起来 但是我现在还没有自己用过 我得赶快开始写了

10:52 看到了邓老师的作业博客 终于知道一个单词是啥玩意了,先把类写好

11:22 天哪 我发现卡在构造函数上了,想用string类 但是不知道有没有赋空间,又不会单元测试,只能拿dev_c++写一个来测一下,效率太低了

3.25

9:00 重新开始一天的工作 上来一块块骨头啃 首先是类中引用新类时候的构造函数的问题

很快就搞定啦~很开心 现在就是要赶快熟练类的编写和使用(完全裸奔的全public版本,就是因为不想去写方法,实际上还是当struct在用 但是总比还写struct要好吧TAT)

中间想到了一个问题,不知道一个文件里会有多少个单词或者词组 所以很讨厌,于是把类写成链表形式

那么问题来了,如果用链表来存储的话,如何高效地保存前10个高频词组和单词呢?

其实仔细想想的话,最好的办法就是构造一个词组/单词类指针数组,随时检测

但是,问题又来了,对于已出现的词组,应该怎么去检索呢?

想到这里,我突然觉得,可能无论对于一个文件还是对于所有文件来说,依字典顺序的二叉排序树可能是最快的查找方法,因为它的复杂度在O(logn),但是继而产生的问题是,如果每个文件/所有文件全都建立一棵树的话,空间会很浪费,为了平衡时间-空间性能,一个想法是对每个文件做统计和建树,这样空间不会浪费,但是如果出现一个词组在两个文件中都出现的情况的话,会使最后的统计难以进行,耗费大量时间。

考虑使用hash表,但是hash表只能加快查找速度,所以我觉得可以先不加,先利用二叉排序树来存储所有文件这个范畴下单词/词组的出现,这样对于查找会变得很方便,同时结合指针数组的维护,查找高频词的速度也会较快,只需要遍历一遍所有文件,就可以获得所有结果 为了作业,还是先不考虑空间的损耗了,为了达成小口吃饭的目标,决定无论怎么样,先维护一棵包括所有单词词组的树吧。

10:00

一些小细节想完了,上博客看一看同学们是怎么想这个问题的

10:15

看完了同学的博客,有一个同学写了各个模块的划分,分成了输入输出,条件判断,计数,存储

接下来就是要把项目结构想一下,初步想一下,项目流大概为 读入目录下的文件,并保存路径(可选功能:以txt形式存储,下次读入直接扫描即可)— 通过文件流读入文件(单个,多个——每一个词组/单词都要存储,为字符数组计数,为树插入节点,维护指针数组——

全部输入完成,进行统计并输出

经过分析,初步看下来把模块分为输入,输出,流操作,树的建立和维护,等几个文件吧

11:19

20:30 开始写二叉排序树~

写了一个小时,把二叉排序树建立好了,把文件流设立好了,但是我现在要去开组会了TAT

原文地址:https://www.cnblogs.com/ZucksLiu/p/8647173.html