程序员,你应该知道的数据结构之哈希表
哈希表简介 哈希表也叫散列表,哈希表是一种数据结构,它提供了快速的插入操作和查找操作,无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1),因为哈希表的查找速度非常快,所以在很多程序中都有使用哈希表,例如拼音检查器。 哈希表也有自己的缺点,哈希表是基于数组的,我们知道数组创建后扩容成本比较高,所以当哈希表被填满时,性能下降的比较严重。 哈希表采用的是一种转换思想,其中一个中要的概念是如何将 键 或者 关键字 转换成数组下标?在哈希表中,这个过程有哈希函数来完成,但是并不是每个 键 或者 关键字 都需要通过哈希函数来将其转换成数组下标,有些 键 或者 关键字 可以直接作为数组的下标。我们先来通过一个例子来理解这句话。 我们上学的时候,大家都会有一个学号 1-n号 中的一个号码,如果我们用哈希表来存放班级里面学生信息的话,我们利用学号作为 键 或者 关键字 ,这个 键 或者 关键字 就可以直接作为数据的下标,不需要通过哈希函数进行转化。如果我们需要安装学生姓名作为 键 或者 关键字 ,这时候我们就需要哈希函数来帮我们转换成数组的下标。 哈希函数 哈希函数的作用是帮我们把非int的 键 或者 关键字 转化成int,可以用来做数组的下标。比如我们上面说的将学生的姓名作为 键 或者 关键字 ,这是就需要哈希函数来完成,下图是哈希函数的转换示意图。 哈希函数的写法有很多中