您的位置: 域名 - 建站教程
« 上一篇下一篇 »

散列算法的作用

分类: 建站教程 发布: zhushican 浏览: 日期: 2014-08-14

散列价值就在于速度:散列算法能很快地找出东西。由于问题是出在键的查找速度上,那么我们就可以用下面这个办法,把键按顺序排好,然后用collections.binarySearc()进行查找。散列则走得更远,它的意思是,你不用管了,我会帮你把键存到某个你能很快找到的地方。数组是最快的数据结构,所以我们用它表示键的信息。注意我们说的是键的信息,而不是键的本身。

键对象会生成一个数字,而我们要用这个数字做下标来访问数组。这个数字就是所谓的hash数。它是由Object定义的hashCode()生成的,而我们已经要求你在类的定义里面覆写这个方法了。要想解决长数组的问题,就得允许多个键生成同一个
hash数。也就是说会有冲突。于是数组多大就变得无关紧要了,每个键对象都会落到数组的某个位置上了。

所以查找过程是从计算hash数开始的,算完之后再用这个数在数组里定位。如果散列函数能够确保不产生冲突,那么它就被称为完全散列函数,不过这只是个特例。通常情况下,冲突是由外部链处理的,数组并不是直接指向对象,而是指向一个对象的列表。

相关文章:

  • 评论:(0)
发表评论

Powered By qqq114.cn

Copyright 【10000个好做seo优化的域名】. Some Rights Reserved.