请教个算法

昊叔 2008-01-22 11:06:25
两个线性表A,B,A,B都无序,A比较大(5W左右),B是A的子集,比较小(5K以下),现在要快速确定B中每个元素在A中的顺序,有什么好算法
...全文
214 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
昊叔 2008-01-29
  • 打赏
  • 举报
回复
VC2005中 hash_map有点慢
昊叔 2008-01-28
  • 打赏
  • 举报
回复
无重复,无序
指针-》ID对应的
chenzhichao2008 2008-01-28
  • 打赏
  • 举报
回复
对上面做一点补充,可以将hash表的大小设为B的大小,A散列时越界的可以不用管
Icicly_qcmos 2008-01-27
  • 打赏
  • 举报
回复
5k-的话排序下,m*log(n)完全可以接受了
xdolt 2008-01-27
  • 打赏
  • 举报
回复
这个条件不明确,还要看场景,比如是否重复,是否顺序……
昊叔 2008-01-27
  • 打赏
  • 举报
回复
布隆过滤器只是查找在不在里面,没法确定序号
昊叔 2008-01-23
  • 打赏
  • 举报
回复
谢谢你的建议,布隆过滤器应该不错。
csdn5211 2008-01-23
  • 打赏
  • 举报
回复
哈希就是空间换时间,如果想剩点空间可以用二叉排序树,不过时间复杂度要上升到log级别,如果一点辅助空间都不用的话,就得是m*n的复杂度。如果A特别特别的大,又想省点空间的话,那可以考虑布隆过滤器。
csdn5211 2008-01-22
  • 打赏
  • 举报
回复
带连接的散列。
1、先将一个散列表全部赋0
2、将B中的元素散列,对应位置赋1,并在散列表中记录在B中的位置
3、对A散列,若对应的散列表所在位置为1,那么……自己想吧

就是这样,复杂度O(m+n)
星羽 2008-01-22
  • 打赏
  • 举报
回复
无序就这样了
昊叔 2008-01-22
  • 打赏
  • 举报
回复
用了哈希表,有更好的算法吗
昊叔 2008-01-22
  • 打赏
  • 举报
回复
有道理

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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