首页 > 其他分享 >散列表的查找

散列表的查找

时间:2023-07-29 11:11:06浏览次数:37  
标签:函数 列表 关键字 地址 查找 散列

散列表的查找

基本思想

记录的存储位置与关键字之间存在的对应关系.

使用哈希函数查找对应的数据

image-20230729102725184

就是直接将学生的学号当做下标来存储.

image-20230729103051035

这样就非常好查找

image-20230729103148029

如何让查找

image-20230729103539745

根据散列函数H(key)=k

查找key=n,则访问H(n)=n的地址,若内容为n则成功.

若查询不到,返回一个特殊值,空指针或空记录.

优点:查找效率非常高;

缺点:空间效率低!

若干术语

image-20230729104110783

散列方法:使用一个函数计算元素的存储位置,按这个位置存放.

查找时,由同一个函数对给定值k计算地址,将k与地址单元中元素关键码进行对比,确定查找是否成功;

散列函数:散列方法中使用的转换函数;

冲突:不同关键码映射到同一个散列地址.

同义词:具有相同函数值的多个关键字.

image-20230729104809228

散列函数的构造方法

在散列查找方法中,冲突不可避免,只能尽可能减少.

image-20230729104958359

使用散列表要解决的两个问题

  1. 构造好散列函数
  2. 制定一个好的解决冲突的方案

image-20230729105229761

构造散列函数考虑的因素

  1. 执行速度

  2. 关键字的长度

  3. 散列表的大小

  4. 关键字的分布情况

  5. 查找频率

    image-20230729105539051

散列表的构造的两个要求

  1. 希望散列的地址空间尽可能的小
  2. 尽量均匀的存放元素,避免冲突.

image-20230729105813810

直接定址法

优点:以关键码key的某个线性函数值为散列地址,不会产生冲突.

缺点:要占用连续地址空间,空间效率低.

image-20230729110139121

除留余数法

关键:如何选取合适的p?

技巧:设表长为m,取p<=m且为质数.

image-20230729110400287

标签:函数,列表,关键字,地址,查找,散列
From: https://www.cnblogs.com/harper886/p/17589489.html

相关文章

  • 把操作列表变成下拉框要加点击事件是什么
     element-ui中的:         <el-table-columnlabel="操作"width="200px">         <templateslot-scope="scope">          <el-selectplaceholder="选择">           &......
  • 【C语言】二分查找算法
    在⼀个升序的数组中查找制定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低,⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然后看⼤了还是⼩了,这就是......
  • 筛选出 1指定行( 编号中包含login的行),2指定列的值 放到列表中
    第一版 写死了列的值的下标,不够人性化,还需要去数列在第几个位置#导包importxlrd#第一步根据包提供的方法读某个路径下的xlsworkbook=xlrd.open_workbook('../data/testcase.xls')#第二步根据名字找某个表每个excel里有Sheet1Sheet2等worksheet=wor......
  • 5.6for与两个列表
     ......
  • Windows | Linux 查找环境变量二进制所在目录
    1.Windows使用where命令wherejava2.Linux使用which命令whichjava......
  • Delphi 的 DBGrid 中的下拉列表和查找字段编程方法
    数据网格是非常流行的数据输入和显示形式,像大家熟悉的Excel、VFP 中的功能强大的BROWS 等,为广大程序员乐于采用。在用 Delphi 开发数据库应用系统时,利用数据网格DBGrid 输入数据时,有些字段只允许某几个固定的字符串,像档案案卷的保管期限,只有“永久”、“长期”和“短期”三种......
  • 单链表查找与删除
    单链表是一种常见的数据结构,它由一系列的节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在单链表中,查找和删除节点是常见的操作。1.单链表查找:要查找单链表中的一个节点,需要从链表的头节点开始,沿着指针依次遍历每个节点,直到找到目标节点或者到达链表的末尾(即指针......
  • python学习_列表
    一、为什么需要列表变量可以存储一个元素,而列表是一个"大容器",可以存储N多个元素,且元素可以是不同的类型,程序可以很方便的对这些数据进行整体操作列表相当于其他语言中的数组列表索引示意图:二、列表的创建列表使用中括号即可创建,列表中的不同元素之间使用英文的逗号进行......
  • PyCharm 获取 Conda 环境列表失败,报错 error code 1 的解决办法
    通常来说,在设置PythonInterpreter时,Condaexecutable的路径为anaconda\Scripts\conda.exe。但是我在给同事部署环境填入该路径,且路径下也确实有对应文件存在,却报错errorcode1。解决方案:用这个路径anaconda\Library\bin\conda.bat可解决问题。这让我想起在Mac上部署Conda......
  • Unity中查找物体
    最清晰的Unity查找物体的几种方法及优缺点详解!其他教程有很多没注意的地方,请看这里!_heliocentricism的博客-CSDN博客 ......