查找给定集(未排序)是否是主集的完美子集的最佳方法是什么。我必须在我的程序中进行一些验证,我需要将客户端请求集与已注册的内部功能集进行比较。
我想通过对内部功能集进行排序(一旦注册后不会更改)并对客户端请求集中的每个元素进行二进制搜索。这是我能得到的最好的吗?我怀疑可能有更好的方法。
有什么想法吗?
此致
微内核
答案 0 :(得分:3)
假设你选择的语言没有实现一个带有“contains in a set”方法的set类,就像Java一样HashSet ...
一个好的方法是使用hashmaps(又名哈希又称关联数组)
如果您的超集不是太大,请生成一个hashmap,将较大集合中的每个对象映射为true值。
然后,遍历子集中的每个元素。尝试在生成的hashmap中查找元素。 如果你失败了,你的小集不是一个peoper子集。如果你没有失败就完成循环,那就是。
答案 1 :(得分:1)
这取决于你的集合中有多少元素。 对于较大的集合,通常使用Hashset作为mainset会产生最佳性能。
答案 2 :(得分:0)
由于您了解内部功能集,因此可以使用perfect hash function来测试客户端请求集的元素。