zoukankan      html  css  js  c++  java
  • Individual Project

    1.做这个项目之前,因为之前在OO课中做过一些项目,这钟算法也非常熟悉,因此算上单纯的词法算法,和C#语言中文件操作的学习,预计一天之内应该可以写好。
    2.实际上做起来时,我发现c#与之前学过的java还是有些差别的,算法非常简单,但是学习使用c#花了许多时间,零零碎碎共做了2天。

    3.原本一直认为程序的最大资源使用会是单词按词频排序,但是经过算法的分析,还是单词+空格+单词这种格式的判断比较耗费时间

    我的算法是这样的:读入一个文本文件的所有字符,以一个字符串形式储存。从头到尾遍历字符串,认为大小写字母和数字都是“字符”,其他都是分隔符,这样整个字符串就是这样的形式:

                               字符+分隔符+字符+分隔符+...

    将所有字符按顺序存储于一个数组中,将所有分隔符也储存在一个数组中。

    这样第i个分隔符的左右两个字符就是第i个字符和第i+1个字符(若i+1还在字符数组的范围内)

    字符并不是等同于要求中的单词,需要经过检查。

    建立单词类,由一个字符串“单词” 和一个整形数“数量”组成。

    功能1:新建单词数组,从前往后遍历字符数组,有符合单词的条件的字符就加入数组。数组在加入单词时检查这个单词(无视大小写)是否存在过,若不存在新加单词,若存在则数量加1并更新这个单词的大小写。然后数组按单词词频排序,数量相等的单词按名称字典序升序排序。

    功能2:新建“双单词”数组,遍历分隔符数组,若分隔符是单个空格,则检查这个分隔符两旁的字符是否都是单词(若越界则不检查),若都是单词,将这个“左单词”+“ ”+“右单词”

    的字符串加入“双单词”数组中,处理方法同功能1,输出词频前10位。

    功能3:新建“三单词”数组,遍历分隔符数组,若连续两个分隔符都是单个空格,则检查这两个分隔符附近的三个字符是否都是单词(若越界则不检查),若都是单词,将这个“左单词”+“ ”+“中单词”+“ ”+“右单词”的字符串加入“三单词”数组中,处理方法同功能1,输出词频前10位。

    4.测试用例:共取了纽约时报上的10篇文章,有些位于测试文件目录下,有些位于测试文件目录中的文件目录下

    与我的队友一起测试,将取得的结果进行对比。

    5.要提高程序效率,一个好的算法非常重要,这少不了编程前的细致分析。另外,我注意到,我写的程序的可移植性很差,整体来看功能是可以的,但是内部几个部分的编程风格还是十分粘滞,我写其他程序时经常要把已经写过的功能再写一遍。这并不是什么好习惯,我在以后的编程过程中一定会注意。

  • 相关阅读:
    关于基本的线程的生命周期
    HTML Response ContentType 大全
    IE与Firefox的CSS兼容大全
    文件上传代码
    C#.NET里面抽象类和接口有什么区别
    用SQL命令创建数据库
    JS根据生日算岁数
    改变Iframe的Src
    JS做加法精度问题
    真正的问题应该在我身上……
  • 原文地址:https://www.cnblogs.com/wyjbjl/p/3993846.html
Copyright © 2011-2022 走看看