散列

本文深入探讨散列技术,包括散列函数的原理、哈希冲突的解决策略、散列码转换及桶排序方法。理解随机性强且规律性弱的散列函数如何提高空间利用率,以及闭散策略和Bitmap在数据处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 介绍

这种电话的记录方式不错,看到电话号码就知道是谁的,而且对应的后面的电话号码仍然没有变化;

在这里插入图片描述

实现上面搜索的方式采取的方法是什么呢?不是rank,posi,key 这种方式是call by value;

在这里插入图片描述
直接采用数组的话,其空间利用率很低,通过哈希算法可以实现压缩
在这里插入图片描述

2 原理

通过散列函数生成散列值,从而减少这个空间;
在这里插入图片描述

采用这个方法,就可以实现上面的需求了:
在这里插入图片描述
但是会有散列冲突,这个要最大程度上降低这个概率
不同的电话号码,通过散列函数生成了同一个散列值
在这里插入图片描述

3 哈希函数

随机性越强,规律性越弱的散列函数越好;有如下方法:在这里插入图片描述

4 散列码转换

通过hashcode(),将关键码key统一转换为一个整数----散列码;然后再利用 散列函数将散列码转为为散列地址;
hashCode()采用重载机制;
在这里插入图片描述

5闭散策略

(1)open hashing +closed address
空间利用率太低,不采用;
在这里插入图片描述

(2)closed hashing +open address
在这里插入图片描述

6 桶排序

(1)最大间隙
(2)基数排序

7 Bitmap

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值