散列的一些概念——基础中的基础

本文探讨了散列的基础知识,包括散列的定义及其在快速查找中的优势。介绍了散列过程和存在的哈希冲突问题,详细阐述了解决冲突的开放定址法(线性、二次和随机探测法)以及拉链法。同时,文章还对比了数组与链表的优劣。
摘要由CSDN通过智能技术生成

       之所以会接触到散列,是因为在学习中遇到这么一个问题:“根据课堂中所介绍的散列索引原理,实现一个自增长散列索引的原型。” 

那么就根据上面这个问题,来探讨下关于散列的一些基础知识。


一、什么是散列?散列“牛”在哪里?

 1.1 什么是散列

        这里说下传统的查找操作,设计如下场景:
        角色:班主任、校长、学生
        需求:找学生中的“张三”
        
        那么场景1:校长要找“张三”,笨的一种方式,是获取学生名单,然后进行比对,发现“张三”,则找人成功。
               场景2:还是校长找“张三”,通过班主任找,班主任可以直接找到自己的学生“张三”,则找人成功。
        这里的场景1与场景2,则是传统的查找操作与“散列”的对比:
        传统查找通过给定的key,通过比对获取相应的value,这个比对的过程是不可省略的。
        散列查找,则是通过某种关系f,直接找到相应的key对应的value,其中没有比对的过程,因此效率非常高。
        
        那么给出一个散列的小概念:存储位置 = f( key ),同时我们称这个关系f为散列函数,又称哈希函数。

1.2 散列牛在哪里

        散列牛在:我们通过查找关键字,不需要比较就可以获得需要记录的存储位置。这个也称之为散列技术。
        下面为散列技术与散列表做一个简单的定义:
        "散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f ( key )"
        查找时,根据这个确定的对应关系找到给定值key的映射f(key
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值