请教诸位一个问题:现有一个数据量,假设就是 int 型的数组,数组容量上亿,数据无序的。判断一个 int 型数据在不在这个数组内。时间在 10 毫秒以内的,有没有什么好的思路啊?
Java 排序遍历求助
相关帖子
-
package com.cyb.algorithm; import java.util.BitSet; public class BloomFilter { //分配bitSet空间 private static final int DEFAULT_SIZE = 1<<28; private BitSet bitSet = new BitSet(DEFAULT_SIZE); //哈希函数的种子(采用质数) private static final int[] seeds = new int []{5,7,11,13,31,37,61}; //哈希函数 private HashFunction[] func = new HashFunction[seeds.length]; public BloomFilter() { for(int i=0;i<seeds.length;i++){ func[i] = new HashFunction(DEFAULT_SIZE,seeds[i]); } } //添加字符串 public void add(String value){ for(HashFunction f : func){ bitSet.set(f.hash(value),true); } } //判断是否被标记过 public boolean contains(String value){ if (value == null) { return false; } boolean result = true; for(HashFunction f : func){ result = result && bitSet.get(f.hash(value)); } return result; } } public class HashFunction { private int capacity; private int seed; public HashFunction(){ } public HashFunction(int capacity, int seed) { this.capacity = capacity; this.seed = seed; } public int hash(String value) { int result = 0; int len = value.length(); for(int i=0;i<len;i++){ result = seed * result + value.charAt(i); } return (capacity-1) & result; } }
文章出自 http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于