哈希表——js实现哈希表

哈希表:基于数组,不能重复且无序将名称及单词与下标或数字对应起来1.将字母或单词转换成下标或数字(hashCode)——过程讲解:方案一:数字相加——数组下标太小方案二:幂的连乘——数组下标太多方案改进:哈希化,例如取余操作 冲突:哈希化后依然有数组下标会重复解决冲突的两种方案:1.链地址法(拉链法)2.开放地址法一:链地址法将冲突(产生冲突的元素一...
摘要由CSDN通过智能技术生成

哈希表:基于数组,不能重复且无序

将名称及单词与下标或数字对应起来

1.将字母或单词转换成下标或数字(hashCode)——过程讲解:

方案一:数字相加——数组下标太小

方案二:幂的连乘——数组下标太多

方案改进:哈希化,例如取余操作

     

冲突:哈希化后依然有数组下标会重复

解决冲突的两种方案:1.链地址法(拉链法)2.开放地址法

一:链地址法

将冲突(产生冲突的元素一般比较少)的元素放到一个链表(或数组)中,将该链表存储于该数组下标位置处

二:开放地址法

寻找空白单元格来添加重复的数据(一般数组的空间会是实际数据需求空间的了两倍)

解决冲突方法:1.线性探测 2.二次探测(修改探测步长) 3.再哈希化的哈希函数  :stepSize=constant-(key%constant)

快速计算:霍纳法则

 

put插入数据函数的封装

get方法图解思路

删除数据

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			function HashTable(){
				this.storage = []
				this.count = 0
				this.limit = 7
				HashTable.prototype.hashFunc = function(str, size){
					//1.定义hashCode变量
					var hashCode = 0
					//2.根据霍纳算法,计算hashCode的值
					//借助Unicode编码计算
					for(var i=0; i< str.length; i&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值