hash查找算法 数据量在10万左右 数据库中存储

  大家好,我知道hash查找算法,第一是先建一个hash表,给出关键码计算hash值,然后根据hash值得出关键码存放位置,可以用链表,也可以用数组存储。然后将要查询的关键码用同意的hash函...

  大家好,我知道hash查找算法,第一是先建一个hash表,给出关键码计算hash值,然后根据hash值得出关键码存放位置,可以用链表,也可以用数组存储。然后将要查询的关键码用同意的hash函数计算hash值,然后去hash表中对应的位置,去查看是否有该元素,关于冲突之类的先不说。

  我先问的是如果我的数据量巨大,我把它存在数据库中,请问我还可以用hash查找算法吗?我是要一个个从数据库总取出关键码,然后计算其hash值,然后创建成hash链表中?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  2015-03-20展开全部1、首先把地图按赤道和0经度线块,左上、右上、左下、右下的Hash code分别是二进制00、01、10、11,然后把每块继续四等分,小块的Hash code就是上一级的Hash code加上本级的这两个二进制位,继续等分下去,你就可以得到不同范围不同位置的很多个Hash code。

  2、每一级Hash code都对应了一个块的大小,这个尺寸可以用来做粗过滤

  查找时,目标点和搜索距离一起可以得到一个合适层级的Hash code,把这个Hash code周围的8个块都算出来,粗筛的范围就这一共9个块。

  遍历这9个块中所有地点,每个地点按照勾股定理算距离(如果你想细算就用球面距离公式),你就得到了一个精确列表。

  1、GeoHash是按照经纬度范围生成的,不是实际距离,所以针对不同纬度下的点要做一些修正。

  2、由于维度在两极会回绕,所以对于南北极点附近的点,基本上你就要做一个全表扫描了,对于日界线附近的点情况也类似,当然除非你做地理学术方面的应用,这种情况基本可以忽略。追问谢您的意思我明白,这是hash思想的一种,您是对地图上的点来查找的。

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。