ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hash,到底好用还是不好用?

2022-07-11 23:04:14  阅读:150  来源: 互联网

标签:11 10 Hash 哈希 到底 数组 好用 3%


  Hash是一种离数散算法,译名为哈希,它的基础概念就是映射,把数据按一定方式分类,存到一个数组里。如数组a[]{1,4,5,2,6,8,11},把这个a[i]存到Hash[a[i]^3%10],就是一种哈希,它的Hash存储方式就是a[i]^3%10。

  有人挺Hash,但有人不建议用Hash,这还得看具体问题和Hash的优缺点。

  Hash相较于数组而言,Hash的存储数有规律的,通过数据就能直接得到它存储的位置,查询这一操作是o(1)的,非常方便快捷。但是它的缺点是空间占用高,一般来说要开数组的2倍甚至更多。

  综上所述,如果用到多次通过数据找存储地址且空间足够的话,用Hash是很好的选择,但是Hash在写的过程中难免会遇到问题。

  我们都知道,a数组的每个数都对应着Hash数组里独一无二的地址,但是比如上面的例子,a[0]为1,在Hash数组里应存为Hash[1^3%10]也就是Hash[1],但a[6]的11,11^3%10同样为1,所以这无法保证每一个元素都有独一无二的地址,这叫做哈希冲突。

  哈希冲突的解决办法有两种,一种是往后寻找,直到找到空位就插入;另一种是用vector,在Hash[i]后挂一个“链表”,但其实就是一个vector,后面接着一连串的同哈希地址的数字。关于这两种用哪一种,第一种更适合于重复概率较小或数据本身较小,如果遇上数据又大,重复率又高,那么就用第二种。

 

The End

标签:11,10,Hash,哈希,到底,数组,好用,3%
来源: https://www.cnblogs.com/jnlc-yab0716/p/16468302.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有