哈希查找
入门最常用的查找方式,理解哈希表原理的关键。
// 搜索输入
定义数组和目标值
可视化演示开发中
哈希查找 的交互式动画即将上线,敬请期待。
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)。
哈希冲突时,同一位置存储多个元素,需要链式或开放寻址解决。
它是字典、集合等数据结构的底层实现原理。