急问:查找

yaohan2004 2003-10-19 04:43:41
从40万个单词中快速查一个单词,怎么查?
多谢!
...全文
29 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
frankzch 2003-10-24
  • 打赏
  • 举报
回复
pxwzd123(tajore):你突然想到的方法都不错撒!第一个方法快接近Trie树了;第二个方法有那么一点点Hash的思想

用B+树把单词放在外存,先要把所有单词按字典顺序排序,然后确定叶子结点大小,最后创建B+树;查找的时候先二分查找,到叶子结点顺序查找
pxwzd123 2003-10-24
  • 打赏
  • 举报
回复
我突然想起一个方法,计算出26个字母开头的各自的范围,共26种情况,然后再计算出这26种情况中第二个字母的26种情况,然后排好序,用二分查找算法分次查找,速度可以加快很多;
第二种方法,几何法,把所有单词的序号与其ASCII码的近似函数表达式求出来,这样,当查找时,可以很快的确定单词的范围,然后再以很小的步长向正确序号逼近,直到找出最后结果。
heartup 2003-10-24
  • 打赏
  • 举报
回复
短歌好厉害.
怎样用B+树把单词存放在外存呢?

zzwu 2003-10-21
  • 打赏
  • 举报
回复
CSDN没有“如何结贴”的帮助,非常遗憾!新来者要学会结贴绝不容易,搞得不好就要被扣分。
pxwzd123 2003-10-20
  • 打赏
  • 举报
回复
有趣,帮你顶
Heskey 2003-10-20
  • 打赏
  • 举报
回复
先排序,再二分查找。也可以建成Red-Black Tree来进行查找,可利用STL中的std::map
justju 2003-10-20
  • 打赏
  • 举报
回复
对单词进行排序,调整数据结构。
mmmcd 2003-10-20
  • 打赏
  • 举报
回复
想给分,点击页面上方“管理”...
yaohan2004 2003-10-20
  • 打赏
  • 举报
回复
谢!大家都加分吧。我不知道怎么给加。
科比布莱恩特 2003-10-20
  • 打赏
  • 举报
回复
建个Hash表,在这个Hash表里找.
短歌如风 2003-10-20
  • 打赏
  • 举报
回复
关键在于结构。
如果要省内存,用B+Tree,把单词放在外存;
如果把单词都放在内存,用Hash比较好,查询速度很快,代码又比较简单。
如果用C++作,也可以直接使用std::map或用非标准的std::hash_map(一般用hash快一些)
BlueSky2008 2003-10-19
  • 打赏
  • 举报
回复
可以O(1)时间找到
BlueSky2008 2003-10-19
  • 打赏
  • 举报
回复
要看单词的存储方式,最好用trie树

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧