This commit is contained in:
krahets
2023-04-09 04:34:58 +08:00
parent adcbab4d4c
commit 01d05cc1f0
26 changed files with 1501 additions and 1247 deletions

View File

@@ -30,13 +30,13 @@ comments: true
链式地址下,哈希表的操作方法包括:
- **查询元素**:输入 key ,经过哈希函数得到数组索引,即可访问链表头点,然后遍历链表并对比 key 以查找目标键值对。
- **添加元素**:先通过哈希函数访问链表头点,然后将点(即键值对)添加到链表中。
- **删除元素**:根据哈希函数的结果访问链表头部,接着遍历链表以查找目标点,并将其删除。
- **查询元素**:输入 key ,经过哈希函数得到数组索引,即可访问链表头点,然后遍历链表并对比 key 以查找目标键值对。
- **添加元素**:先通过哈希函数访问链表头点,然后将点(即键值对)添加到链表中。
- **删除元素**:根据哈希函数的结果访问链表头部,接着遍历链表以查找目标点,并将其删除。
尽管链式地址法解决了哈希冲突问题,但仍存在一些局限性,包括:
- **占用空间增大**,由于链表或二叉树包含点指针,相比数组更加耗费内存空间;
- **占用空间增大**,由于链表或二叉树包含点指针,相比数组更加耗费内存空间;
- **查询效率降低**,因为需要线性遍历链表来查找对应元素;
为了提高操作效率,**可以将链表转换为「AVL 树」或「红黑树」**,将查询操作的时间复杂度优化至 $O(\log n)$ 。