(2.5)查找之哈希查找

1.哈希函数的定义

  • 一般情况下,需在关键字与记录在表中的存储位置之间建立一个函数关系,以 H(key) 作为关键字为key 的记录在表中的位置,通常称这个函数 h(key) 为哈希函数

在这里插入图片描述
在这里插入图片描述

  • 哈希函数的特点
    (1)哈希函数是一个映象即: 将关键字的集合映射到某个地址集合上, 它的设置很灵活,只要这个地址集合的大小不超出允许范围即可;
    (2) 由于哈希函数是一个压缩映象,因此,在一般情况下,很容易产生“冲突” 现象,即: key1≠key2,而 h(key1) = h(key2)。
  1. 很难找到一个不产生冲突的哈希函数。
    一般情况下, 只能选择恰当的哈希函数,使冲突尽可能少地产生。
    因此,哈希查找需要做两方面事情:选择一个“好”的哈希函数;提供一种“处理冲突” 的方法。
  • eg:
在学号范围内:XX000 ~ XX999,查找学号:17138,选择查找的方法
(1)顺序查找: O(n),平均约比较500次(平均比较的次数为:n/2)
(2)二分查找: O(logn),平均约比较10次
(3)哈希查找:取给定学号的后三位, 不需要经过比较, 便可直接从查找表中找到给定学生的记录。

3.哈希表

  • 根据设定的哈希函数 H(key) 和提供的处理冲突的方法,将一组关键字映象到一个地址连续的地址空间上,并以关键字在地址空间中的“象” 作为相应记录在表中的存储位置,如此构造所得的查找表称之为哈希表。
    地址空间存储的数据集合称为哈希表
    在这里插入图片描述

2.好的哈希函数特点

  • (1)计算简单
  • (2)冲突少

3.常见的哈希函数的构造方法

发布了510 篇原创文章 · 获赞 134 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/104080615