跳表+散列表+哈希算法

跳表

链表加多级索引的结构就是跳表
跳表中快速的插入、删除、查询任意数据的时间复杂度是O(logn);跳表的空间复杂度是O(n)

散列表

  1. 散列表英文叫hash table,就是哈希表或者hash表。

  2. 散列表用的事数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一中扩展,由数组演化而来。可以说,如果没有数组就没有散列表。

  3. 散列表中有键、散列函数、散列值
    散列函数,就是一个函数,它可以定义成hash(key),其中可以表示元素的键值,hash(key)的值表示经过散列函数计算得到的散列值。

    散列函数设计的基本要求:

  • 散列函数计算得到的散列值是一个非负整数;

  • 如果key1=key2,那么hash(key1)==hash(key2);

  • 如果key1 ≠ key2,那么hash(key1) ≠ hash(key2)
    散列函数的第三点很难解决,即使经典的md5等也很难解决,一般采用两种方法:
    1、开放寻址法
    开放寻址冲突解决方法,除了线性探测方法之外,还有另外两种比较经典的探测方法,二次探测双重散列
    不管采用哪种探测方法,当散列表中空闲位置不多的时候,散列冲突的概率就会大大提高。为了尽可能保证散列的操作效率,我们会尽可能保证散列表中有一定比例的空闲槽位,用装载因子表示空位的多少。

    <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值