首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

查寻效率。

2012-09-23 
查找效率。。。。。。???如果我有一个数组a[1000000] 里面保存了100万个数据数组b[100]里面保存了100个数据(假设

查找效率。。。。。。???
如果我有一个数组a[1000000] 里面保存了100万个数据
数组b[100]里面保存了100个数据(假设这100个数据a中都有),现在我想从a中找出b中这100个数据的位置,怎样才能使效率快一些。。。

[解决办法]
多线程,分块查找。。数组a分成N块分别查找
[解决办法]
额。。这样太慢了。。
最快的是建立中间的一个Hash表。

这样只需要遍历a一遍。b一遍就可以了。当然这需要一定的空间开销但是不大。

为了避免冲突 中间hash表可能会要200W的长度,依情况而定。

伪代码这样

//初始化全部为-1
//遍历a 
HashTable table[200W];
for( int i = 0; i < 100W ; i++ )
{
int index = hash_function(a[i]);
table[i] = index;
}

//遍历b
for( int i = 0 ; i < 100 ; i++ )
{
int index = hash_function( b[i] );
if( table[index] != -1 )
{
pinrtf( 找到了。。。);
}
}




自己写个hash函数。把a的内容映射成一个hash值。int

热点排行