目录
1. 哈希表简述
散列表的英文名称为 hash table
,因此散列表又被称为哈希表,散列函数又被称为哈希函数
散列表通常基于数组来实现。借助散列函数对数组进行扩展,利用的是数组支持按照下标随机访问元素的特性
- 存放数据的时候,散列函数根据
f(key)
计算出数据应该存储的位置即数组下标,从而将不同的数据分散在不同的存储位置,这也是散列的由来 - 查找的时候,通过散列函数
f(key)
直接确定查找hash
值所在位置即数组下标。而不需要一个个比较,直接找到数据,提升效率 - 散列表存放元素的数组位置也被称为槽
slot
1.1. 哈希表与链表,树等查找数据的不同
最简单的顺序表结构查找包括简单的顺序查找、二分查找、插值查找、以及后来的树结构查找包括二叉排序树、平衡二叉树、多路查找树、红黑树等。它们有一个功能特点就是,要查找的元素始终要与已经存在的元素进行多次比较,才能查找该元素
散列表与线性表、树、图等结构不同的是,后几种结构数据元素之间都存在某种逻辑关系,而使用散列技术的散列表的数据元素之间不存在什么逻辑关系,元素的位置只与关键字 key
和散列函数 f(key)
有关联
1.2. 几种典型数据结构特点
- 数组:随机访问效率较高,插入和删除效率较低
- 链表:随机访问效率较低,插入和删除效率较高</