亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript創建散列表時,散列函數有什么用?

JavaScript創建散列表時,散列函數有什么用?

慕碼人8056858 2019-03-13 21:19:03
在看 數據結構與算法JavaScript描述 這本書時有個疑惑為什么需要散列函數來將值轉為散列值?如有個數組,如果我想通過名字快速查找在peopel數組中的位置let people = [    {name: '大傻子', tel: '138111111'},    {name: '二傻子', tel: '138222222'},    {name: '小傻子', tel: '138333333'}]let _people = 取首字母的散列函數(peopele)// 得到 // _people = {    '大': 0,    '二': 1,    '小': 2// }為什么不直接使用整個名字做散列值?
查看完整描述

4 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

擴展性啊,擴展性
如果又要往people里面放一個age或者addr字段的話,你的_people怎么辦?
別說約定|之類的,那都是妖術,妖術啊少年!

查看完整回答
反對 回復 2019-03-15
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

就算加了幾個字段,但是首字母和index對應關系還是沒變! 還是不需要散列函數呀?


查看完整回答
反對 回復 2019-03-15
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

首先樓主沒有明白散列函數的意義
散列函數的意義在于提高查找的效率

一段數據結構可能很大,比如100W條數據,其中以A開頭的數據有10W條,查找Abc
如果沒有散列函數,你要找到這個數據,可能需要遍歷100W條數據,才能找到,但是如果有散列函數,
比如散列首字母,那么只要查找hash表,就可以減少查找的目標變成10W條
那么就可以確定最多只需要遍歷這10W條數據就可以了


查看完整回答
反對 回復 2019-03-15
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

你這里其實提了兩個問題

散列函數有什么用?

散列函數起到一個映射(mapping 或者投映 project)的作用。試想一下,隨著開發后面如果出現了處理重名的需求時候你要怎么改。用散列函數那么只需要在函數中修改一下映射關系即可。

為什么不用全名?

用全名也是可行的,它例子這里姓氏都不一樣,那么只用一個字符可以減少比較次數。(不太符合常理,個人覺得這個例子不是很好)


查看完整回答
反對 回復 2019-03-15
  • 4 回答
  • 0 關注
  • 812 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號