Assignment思路

问题: 在给定的文本中找出100个最常出现的单词
1.如何找单词,如何界定单词(一般最小单位为字符): 有空格间隔的是单词
2.如何对单词数量进行排序 如何统计各个单词出现频率

如何存储整个本书(单词极多)
1.定义一个结构体word,表示一个单词 (char w[20]—存储单词, int frequency –记录出现的频率)

2.打开文件,读取文件并存储整个文件(定义新的数组,基本元素为结构体word)

思路:
程序就是数据结构+算法,要解决这个问题,我们得找到适用的数据结构以及一个好的算法。

  1. 定义一个合适的数据结构(由需求定义逻辑结构): 核心为 存储字符串, 存储字符串出现的次数
    在这里插入图片描述
    2.定义存储结构(用线性表还是用树):

字典 key为单词 value为单词出现的次数
利用一个字典来保存所有字典,value来保存每个单词的次数,当字典中没有该单词时,执行新增操作;若已经有该单词则执行更新操作,最后返回次数最多的单词即可。空间复杂度N 时间复杂度平均为N

大体思路: 数据结构+算法是程序员的基本方法论
1.将单词存入结构体数组(即构建数据结构并将数据存入数据结构中) – 再拆分: 1.打开文件 2.完整输出文本 3.开始存入
2.统计单词的频率
3.根据频率进行堆排序(对text[i].frequency 进行堆排序)

细节:
1.内存分配 Max_size =20w内存无法分配这么大的连续存储空间 =1w, 读不完给定的文本 =5w,终于能运行起来了
2.步步为营: 每步皆可见(先实现能打开文件,完整输出文本 print)
3.if条件考虑不周全: 有几种情况- 1.字母,
在这里插入图片描述
2.其他字符(考虑不周全了)-再拆分: 需要再细分 -对if的理解:分类讨论思想:1.分类要全面,详细。 2.分类条件要写对

字母 – 存储入字符数组
非字母 – 结束字符数组(\n),并

对if, else if的理解:
必须包含所有情况(不处理也是一种情况)

猜你喜欢

转载自blog.csdn.net/weixin_44682507/article/details/107144398