zoukankan      html  css  js  c++  java
  • 数据结构-散列表(哈希表)查找

    0、前言

    顺序表:一个一个挨个查找;

    有序查找:二分查找方法;

    散列表查找:记录的存储位置=F(关键字)

    散列技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。

    查找时,根据这个确定的对应关系找到固定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。

    我们把这种对应关系f称为散列函数,又称为哈希函数(Hash)。采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或者哈希表

    1、散列表的查找步骤

    1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录;

    2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。

    所以说,散列技术既是一种存储方法,也是一种查找方法。

    散列技术最适合的求解问题就是查找与给定关健值对应的记录(一对一)。不过散列表不适合范围查找,比如查找一个班级18-22岁的同学,在散列表中没法进行。想获得表中记录的排序也不可能,像最大值、最小值等结果也都无法从散列表中计算出来。

    2、散列函数的构造(两个关键字不能出现冲突)

    好的散列函数:计算简单和散列地址分布均匀。

    1)直接定址法;F(key)=key;

    2)数字分析法;

    3)平方取中法;

    4)折叠法;

    5)除留余数法;

    6)随机数法;

    3、处理散列冲突的方法

  • 相关阅读:
    centos7 安装svn, 同时支持 svn 和 http访问
    Maven单独构建多模块项目中的单个模块
    openfalcon agent 监控数据
    kubernetes 垃圾回收机制
    docker tomcat 已主机名为日志输出路径
    k8s mongodb 集群配置
    修改Centos7的网卡ens32 改为eth0
    jenkins发版脚本更新
    Git系列七之备份迁移 升级 恢复管理
    confluence wiki搭建使用
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12396918.html
Copyright © 2011-2022 走看看