u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口
大家还记不记得前面介绍的几个数据结构谁最方便查询?当然是数组,数组根据可以下标直接访问对应的值。而哈希表本质上也和数组很类似,不同的是,数组往往是以这样的形式来访问,比如arr[0],arr[1],下标是整数,但哈希表是以字符串类型为主的,比如在中国移动营业厅里,工作人员可以在系统中输入用户的姓名,得到该用户的电话号码和消费情况等信息。又或者在英语app里,输入一个英文单词,查询得到该单词相关的信息。这个时候就需要一个方法来把键和数组下标进行转换,这个方法就叫做哈希函数。
简单来说,哈希函数就是快速的将1个数值转换为1个哈希值,(ccy981112)哈希值是整数,并且要保证,相同的输入得到的哈希值是一样的,如果两个不同的输入得到了相同的结果,这就是哈希值冲突。我们应该通过精心的设计去减少冲突,但是不能完全避免,如何处理冲突是一个重点,后面会详细说到。
也就是说,输入键(key),然后经过哈希函数计算,最后得到哈希值,而哈希值是整数,通过哈希值当做数组下标,得到对应的值。
输入key,经过哈希函数计算fun(key),最后得到y。要把y取余,y%arr.Length,免得超出数组最大长度,最后把y当做数组下标去访问数组里对应的值,这就是整个过程了。
按照这种思想,采用哈希技术将值存储在一块连续的存储空间中,这块连续的存储空间称为哈希表或者散列表。关键字对应的存储位置称为哈希地址或者散列地址。
TL;DR[1]: 通过任意函数,把任意长度数据映射成固定长度数据,那么最终得到的这个固定长度的数据,就叫做哈希或者哈希值,这个函数叫做哈希函数,这个过程也可以叫哈希。