• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 关于用C从txt文件查找单词的搜索算法优化问题

关于用C从txt文件查找单词的搜索算法优化问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了算法的英文单词,算法单词,算法训练 单词接龙,算法英语单词,单词包算法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于用C从txt文件查找单词的搜索算法优化问题
描述:

用C或C++实现从一个比较大的txt文件里查找一个单词,txt文件里每行一个单词,按a~z从上到下排列,有什么好的算法,用什么数据结构可以提高查询的速度和效率??


解决方案1:

如果修改一下问题,这个txt文件有1T大,怎么弄会好点。声望不够,改不了。

解决方案2:

按你的题目来看,似乎这些单词都是排过序的?如果是有序的话,就可以按照二分的方法来做。先读取文件总共由多少行,然后以第一个字符来查找,再按照第二个字符,以此类推,这个算法的好处是不用读取所有文件到内存中。

解决方案3:

如果允许对txt文件预处理的话,可以用倒排索引来实现。

如果txt文件只查一次、以后再也用不到的话,那就没有。

解决方案4:

这种情况考虑下面这种数据结构: 字典树(DictTree)

typedef struct _dict_tree_
{
    struct _dict_tree_ * dt[TREENODENUM];
    char    c ;
    char    flag ;
}DT ;

具体操作就是

所谓的26叉树,按照每个字母对应的子节点存储。 然后逐行读取单词后插入到树中,比如说: 单词:abandon 插入树的顺序就是 a->b->a->n->d->o->n 插入每个字母对应这个树的子节点

int len = strlen(str);
while( i < len )
{
    index = str[i] - 97 ;        /*通过 index 来找到子节点*/
    if( pt->dt[index] == NULL )
    {
        pt->dt[index] = ( DT *)malloc( sizeof( DT) );
        pt->dt[index]->c = str[i] ;
        pt->dt[index]->flag = EMPTY ;
        for( j = 0 ; j < TREENODENUM ; j++ )
        {
            pt->dt[index]->dt[j] = NULL ;
        }
    }
    pt = pt->dt[index] ;
    i++;
}

查找就是顺着字母判断子节点是否为空

int len = strlen(str);
while( i != len )
{
    index = str[i] - 97 ;
    if( pt->dt[index] == NULL )
        return 0 ;
    pt = pt->dt[index] ;
    i++;
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于用C从txt文件查找单词的搜索算法优化问题

相关文章

  • 2017-06-07 比较三门解释型语言;算法和数据结构对程序员来说究竟有多重要
  • 2017-06-07 请问iOS的七牛sdk什么时候能支持afnetworking30啊?
  • 2017-06-07 (flask)falskyweb部署到heroku时pushrejected[已解决]
  • 2017-06-07 php中curl模拟post发送json并接收json
  • 2017-06-07 MacOS,sublime或者chrome选择文件时很卡,风火轮转不停
  • 2017-06-07 用户上传的图片大小不一,如何展示同一个规格?
  • 2017-06-07 jquery源代码中的rtrim
  • 2017-06-07 安卓手机微信上传图片总是不成功,急,急,急,有没有人遇到过?
  • 2017-06-07 (python)一个django工程如何管理不用的独立站点?
  • 2017-06-07 rails运行shell命令遇到的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 现在redis哪个版本比较稳定?
    • Unicode转中文,开发工具为pycharm,语言Python2,怎样处理?还是我程序有误?
    • gogogo世界杯(golang)go语言中channel疑惑
    • 苹果Macbook和Win7系统,我想通过wifi搭建局域网?
    • pythonre和urllib的使用问题。
    • python35urllibparseunquote乱码
    • 有没有纯用python实现的生产性服务器,支持django?
    • (python)怎么删除300+有用数据以外的数据?
    • go显示不出图
    • mkfile请求返回"error":"找不到视频","error_code":26904

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有