哈希查找

入门

最常用的查找方式,理解哈希表原理的关键。

定义数组和目标值

可视化演示开发中

哈希查找 的交互式动画即将上线,敬请期待。

// 源代码
1int hashSearch(int arr[], int n, int target) {
2    unordered_map<int, vector<int>> hashTable;
3    for (int i = 0; i < n; i++)
4        hashTable[arr[i] % 13].push_back(i);
5
6    int key = target % 13;
7    if (hashTable.find(key) == hashTable.end())
8        return -1;
9
10    for (int idx : hashTable[key])
11        if (arr[idx] == target)
12            return idx;
13    return -1;
14}

复杂度分析

时间 O(1) 平均
空间 O(n)
最优 O(1)
最坏 O(n)

算法讲解

哈希查找通过哈希函数将键值映射到数组的某个位置。

理想情况下,每个键对应唯一位置,查找时间为 O(1)。

哈希冲突时,同一位置存储多个元素,需要链式或开放寻址解决。

它是字典、集合等数据结构的底层实现原理。