① 散列存储与其他存储主要有什么区别
散列存储是直接将关键字的值做一个映射到存储地址 索引存储则是另外使用关键字来构建一个索引表(也可以是单级,也可以是多级的),先在索引表中找到存储
② 哈希表不仅仅反映数据元素的存储位置,还反映数据元素之间的相互关系对吗
哈希表的定义哈希存储的基本思想是以关键字Key为自变量,通过一定的函数关系(散列函数或哈希函数),
③ 对线性表(38、25、74、52、48)进行哈希存储,采用h(K)=K%7作为哈希函数,如果采用线
平均查找长度ASL=2
④ 散列存储时,哈希表的大小可随意选取,通常取10的倍数
摘要 亲,您好。这边正在为您整理最精准的答案,请稍等片刻。
⑤ 数据结构中散列存储和索引存储的区别!求教 最好能生动点
散列存储是直接将关键字的值做一个映射到存储地址
索引存储则是另外使用关键字来构建一个索引表(也可以是单级,也可以是多级的),先在索引表中找到存储位置后,再访问内容
⑥ 哈希存储和哈希函数有关系吗
哈希函数其实是“Hash函数”,只不过是音译过来的。 Hash函数: Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
⑦ 假定一个待哈希存储的线性表为{32,75,63,48,94,25,36,18,70},哈希地址空间为[0…10],若采用除留余数法构
32,75,63,48,94,25,36,18,70,这些关键码除留余数,到底是对几,即使是对11除留余数
32 % 11 = 10
75 %11 = 9
63 % 11 = 8
48 % 11 = 4
94 % 11 = 6
25 % 11 = 3
36 % 11 = 3,这里发生冲突,因此题目中应该还有解决冲突的方法呢,这个不知道,
18 % 11= 7
70 % 11 = 4,这个也冲突了
麻烦将冲突解决方法贴上来
⑧ hash函数创始人
发明者不知道。
发明的目的是提高海量数据的查找速度。
简单问题举例:
数据表中有N个无序的字符串(例如:英文人名),
给你一个字符串,请迅速找到它在数据表中的序号。
最笨的方法是逐个比较的方式来查找。查找时间是O(N),简单说最后的
情况是比较N次。
hash 表能够加快查找速度。使用hash表首先要申请一个定长的指针数组。
通过在建立数据表时通过特定的计算公式(hash散列函数)计算出每个字符串对应的一个数值。而后把此数值作为数组下标,把此字符串在数据表的序号保存在此数组元素中。(可以扩展到保存一个结构体指针)
将来想查找某字符串对应位置时,只需要通过hash散列函数计算出字符串对应的值就可以直接知道此字符串的序号等信息了。这样查找时间是O(1)了。因为不需要查找了,知道数组下标就能访问数组相应元素了,而元素中保存的就是序号等信息。
⑨ 堆和队列一般不使用哈希存储对吗
堆和队列一般不使用哈希存储。
哈希存储亦称“散列存储”,专用于几何结构的一种存储方式。因为哈希函数需要尽量简单,其值域必须在表长的范围之内,尽量不要产生“冲突”,故不适用于堆和队列。
堆是一种经过排序的树形数据结构,每个节点都有一个值。通常所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列。
队列也是一种线性结构。 特殊之处在于它只允许在队列的前端(front)进行删除操作,而在队列的后端(rear)进行插入操作。当队列中没有元素时,即front=rear,称为空队列。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。队列符合先进先出(FIFO,first in first out)原则。