社区
数据结构与算法
帖子详情
请教词典查询单词的算法?
solitarystar
2003-09-14 08:48:51
查询效率要高的算法
...全文
70
3
打赏
收藏
请教词典查询单词的算法?
查询效率要高的算法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caoxic
2003-09-15
打赏
举报
回复
2分法太慢,不能模糊查询,要快可以建索引树,
词典依字母排序后,根据单词分布建树。
数据结构如下:
typedef struct tagSEARCHTREE SEARCHTREE,*LPSEARCHTREE;
struct tagSEARCHTREE
{
LONG position;//索引树的起始位置
LONG wordnumber;//索引树包含单词个数
DWORD reserve;
LPSEARCHTREE sontree[27];//子树,sontree[0]代表‘ ’分支,
//sontree[1]到sontree[26]代表阿a~z分支
};
为解决索引大小与查询速度快慢的矛盾定义一个宏
#define TREELEAFMAXWORD 100
标志叶节点最大包含单词个数。
建索引树为代码如下:
void MakeSearchTree(char *parentname, int pos, int wordnum,int depth)
{
LPSTR treename;
int i,len,sonpos,sonsum[27];
char c;
memset(sonsum,0,sizeof(sonsum));
for(i=0;i< wordnum;i++)
{
c=第 pos+I 单词的 第depth字母;
if(c==空格) sonsum[0]++;
else if(c>=’a’&&c<=’z’) sonsum[c-‘a’+1]++;
}
sonpos=pos;
for(i=0;i<27;i++)
{
if(sonsum[i]> TREELEAFMAXWORD)
{
if(I==0)
sonname= parentname+’_’;
else
sonname= parentname+(I-1+’a’);
MakeSearchTree(sonname,sonpos,sonsum[I],depth+1);
}
sonpos+=sonsum[i];
}
}
将单词每个翻转(ab-ba,abc->cba)以后排序,并将翻转后的索引建表
查询时遇“?”如果有子树进行递归查询,没有子树顺序查找(最多查找TREELEAFMAXWORD次)。
查询时遇“*”,(不允许出现关键词前后都是“*”)。假设__代表一个或多个已知字母。
1,——*型:查找——即可。
2,*——型:在翻转后的树查找——
3,——*——型:1,2查找结果取交集处理(需注意“ba*ad”查找到“bad”)
zzwu
2003-09-15
打赏
举报
回复
用折半查找法(或称2分法)就行了.
solitarystar
2003-09-14
打赏
举报
回复
还有词库的数据结构应该怎么设计
JAVA开发常见
单词
(*)
1.mode:模式、方式、样式。2.subscription:订阅。3.scan:浏览、扫描。4.Interval:间隔、间歇。5.load:负载、装载、加载。6.balance:平衡、均衡。7.idle:懒惰的、闲置的。8. retry:复审、重试。9.attempt:企图、试图。10.sentinel:哨兵。11.charts:图表,记录,跟踪。12.node:节点。13.conver:转化、转变。14.process:过程、 进程。15.charset:字符集。16.nested:嵌套。17.cons
how to read paper ——知乎
首先声明,我的方向是机器学习和数据挖掘,平时读的文章偏重
算法
研究。计算机本身就是个很大的学科,
算法
,嵌入式,网络都是计算机,但是我认为研究的侧重点是不一样的,文章的结构也会不同,所以我就只能根据机器学习方面的经验说说了。 个人觉得做研究的不同时期读论文的方式也不一样,最开始刚入行的时候当然会一个字一个字的读,甚至还会用
词典
把
单词
的意思查出来标在旁边(我非常反对这么做!你不是在学英语!),我见
【作业四】软件案例分析之必应
词典
突然发现每次写博客都写了好大一堆废话,自己看着也觉得有点累,从现在开始尽量开始改正过来吧。 一、调研,评测 1.bug定义 找BUG前,先来看看什么叫BUG,下面是引用《构建之法》第13章软件测试中对于BUG描述的片断。 Bug:软件的缺陷 Bug可以分解为:症状(Symptom)、程序错误(Fault)、根本原因(Root Cause)。 1)症状:即从用户的角度看,软件出了什么问题。例...
今日头条面经汇总
算法
翻转二叉树 最大连续子串和 给一棵边权树树找到最大路径,要找到两个端点怎么办 给一个字符串和
单词
列表,判断字符串能不能由这些
单词
组成 给定一组股票的价格,最多买卖0一次,问最大收益 !!!二叉树任意两个节点之间路径的最大长度 二叉树的深度 lfu 一个链表 奇数位升序偶数位降序 让链表变成升序的 给你一个循环后的数组 比如 45123 问你恢复原数组 最少几...
谭浩强《C程序设计》(第四版)错误不完全汇集
前言 p12 ① 数据类型介绍中,增加了C99扩充的双长整型(long long int)、复数浮点型(float complex,double complex ,long long complex)、布尔型(bool)等,使读者有所了解。 ② C99要求,main函数的类型一律指定为int型,并在函数的末尾加一个返回语句“return 0;”。 评:long long complex,bool根本是子虚乌有的。数据类型都整不明白,还谈什么语言、
算法
呢? C99并没有要求main函数的类型一律指定为int型
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章