猿问

JavaScript创建散列表时,散列函数有什么用?

在看 数据结构与算法JavaScript描述 这本书时有个疑惑

为什么需要散列函数来将值转为散列值?

如有个数组,如果我想通过名字快速查找在peopel数组中的位置


let people = [

    {name: '大傻子', tel: '138111111'},

    {name: '二傻子', tel: '138222222'},

    {name: '小傻子', tel: '138333333'}

]



let _people = 取首字母的散列函数(peopele)


// 得到 

// _people = {

    '大': 0,

    '二': 1,

    '小': 2

// }

为什么不直接使用整个名字做散列值?


慕码人8056858
浏览 780回答 4
4回答

Cats萌萌

扩展性啊,扩展性如果又要往people里面放一个age或者addr字段的话,你的_people怎么办?别说约定|之类的,那都是妖术,妖术啊少年!

阿晨1998

就算加了几个字段,但是首字母和index对应关系还是没变! 还是不需要散列函数呀?

大话西游666

首先楼主没有明白散列函数的意义散列函数的意义在于提高查找的效率一段数据结构可能很大,比如100W条数据,其中以A开头的数据有10W条,查找Abc如果没有散列函数,你要找到这个数据,可能需要遍历100W条数据,才能找到,但是如果有散列函数,比如散列首字母,那么只要查找hash表,就可以减少查找的目标变成10W条那么就可以确定最多只需要遍历这10W条数据就可以了

慕田峪9158850

你这里其实提了两个问题散列函数有什么用?散列函数起到一个映射(mapping 或者投映 project)的作用。试想一下,随着开发后面如果出现了处理重名的需求时候你要怎么改。用散列函数那么只需要在函数中修改一下映射关系即可。为什么不用全名?用全名也是可行的,它例子这里姓氏都不一样,那么只用一个字符可以减少比较次数。(不太符合常理,个人觉得这个例子不是很好)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答