哈希查找

来源:互联网 发布:心书网络 更新朋友圈 编辑:程序博客网 时间:2024/06/05 02:40

1、思想

哈希表查找是通过对记录的关键字值进行运算,直接求出结点的地址,是关键字到地址的直接转换方法,不用反复比较。

哈希查找是通过计算数据元素的存储地址进行查找的一种方法。O(1)的查找,即所谓的秒杀。哈希查找的本质是先将数据映射成它的哈希值。哈希查找的核心是构造一个哈希函数,它将原来直观、整洁的数据映射为看上去似乎是随机的一些整数。

哈希查找的操作步骤:

1、用给定的哈希函数构造哈希表;2、根据选择的冲突处理方法解决地址冲突;3、在哈希表的基础上执行哈希查找。

2、代码实现

/****  * Hash查找  *   * @param hash  * @param hashLength  * @param key  * @return  */  public static int searchHash(int[] hash, int hashLength, int key) {      // 哈希函数      int hashAddress = key % hashLength;      // 指定hashAdrress对应值存在但不是关键值,则用开放寻址法解决      while (hash[hashAddress] != 0 && hash[hashAddress] != key) {          hashAddress = (++hashAddress) % hashLength;      }      // 查找到了开放单元,表示查找失败      if (hash[hashAddress] == 0)          return -1;      return hashAddress;  }  

3、分析

Hash查找法是比较高效的一种实现方式,其时间复杂度为O(1),其主要用于一些不容易排序的查找,从而直接使用hash值取其值。

0 0
原创粉丝点击