在看 数据结构与算法JavaScript描述 这本书时有个疑惑为什么需要散列函数来将值转为散列值?如有个数组,如果我想通过名字快速查找在peopel数组中的位置let people = [ {name: '大傻子', tel: '138111111'}, {name: '二傻子', tel: '138222222'}, {name: '小傻子', tel: '138333333'}]let _people = 取首字母的散列函数(peopele)// 得到 // _people = { '大': 0, '二': 1, '小': 2// }为什么不直接使用整个名字做散列值?
4 回答
大话西游666
TA贡献1817条经验 获得超14个赞
首先楼主没有明白散列函数的意义散列函数的意义在于提高查找的效率
一段数据结构可能很大,比如100W条数据,其中以A开头的数据有10W条,查找Abc
如果没有散列函数,你要找到这个数据,可能需要遍历100W条数据,才能找到,但是如果有散列函数,
比如散列首字母,那么只要查找hash表,就可以减少查找的目标变成10W条
那么就可以确定最多只需要遍历这10W条数据就可以了
慕田峪9158850
TA贡献1794条经验 获得超7个赞
你这里其实提了两个问题
散列函数有什么用?
散列函数起到一个映射(mapping 或者投映 project)的作用。试想一下,随着开发后面如果出现了处理重名的需求时候你要怎么改。用散列函数那么只需要在函数中修改一下映射关系即可。
为什么不用全名?
用全名也是可行的,它例子这里姓氏都不一样,那么只用一个字符可以减少比较次数。(不太符合常理,个人觉得这个例子不是很好)
添加回答
举报
0/150
提交
取消