`
stinge
  • 浏览: 149299 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

散列表

阅读更多

散列

 

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。

也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,

存放记录的数组叫做散列表。

 

 * 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。

 

  * 对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称冲突。具有相同函数值的关键字对该散列函数来 说称做同义词。

 

  * 若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。

 

常用散列函数

 

1、直接定址法

   hash(key)=a*key+b

 

2、求余法

   hash(key) = key mod p

  p小于等于,且接近散列表长

 

3、 数字分析法: 分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,这样的话,出现冲突的几率就 会很大,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低。因此数字分析法就是找 出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。

 

4、 平方取中法: 取关键字平方后的中间几位作为散列地址。

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    课程设计 散列表 的设计与实现.

    散列表的设计与实现,课程设计. 设计散列表实现电话号码查找系统。 【基本要求】 1) 设每个记录有下列数据项:电话号码、用户名、地址; 2) 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; 3) 采用...

    散列表的建立和查找.zip

    为小于n个关键字设计一个散列表,使得查找成功时平均查找长度,要求完成相应的散列表建立和查找。假设关键字为整型数据,散列函数用除留余数法,采用开放定址法的线性探测法处理冲突。 1.从键盘输入关键字个数n及...

    课程设计散列表的设计与实现

    散列表的设计与实现,课程设计. 设计散列表实现电话号码查找系统。 【基本要求】 1) 设每个记录有下列数据项:电话号码、用户名、地址; 2) 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; 3) 采用...

    散列表的设计与实现_散列表的设计与实现_

    设计散列表实现电话号码查找系统。基本要求:(1)设每个记录有下列数据项:电话号码、用户名、地址;(2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;(3)采用双散列法解决冲突;(4)查找并显示给定...

    散列表的设计与实现

    散列表是一种存储结构,是和链表,数组不同的存储结构,其存储位置是有存储数据而定的,本题中,有学生姓名、住址和电话号码,输入学生姓名,将拼音字母转化成阿克斯码,将所有的阿克斯码加起来与20取余数得到的数字...

    散列表 (哈希表,线性探测再散列)

    散列表,也称为哈希表。根据设定的哈希函数H(key)和处理冲突的方法将一组关键字映像到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”作为记录在表中的存储位置的表。 哈希函数的构造方法:1)...

    散列表 数据结构课设

    5、散列表的设计与实现 任务:设计散列表实现电话号码查找系统。 要求: (1) 设每个记录有下列数据项:用户名、电话号码、地址; (2) 从键盘输入各记录,以用户名(汉语拼音形式)为关键字建立散列表; (3) ...

    散列表---算法数据结构

    散列表散列表散列表散列表散列表散列表散列表散列表散列表散列表

    Linux内核中链表和散列表的实现原理揭秘

    Linux内核的实现,大量使用了数据结构,包括了数组、链表和散列表。其中用的最多的是双向循环链表。Linux内核使用的是自己定义的链表和散列表,简单而高效,使用方法也非常的别具一格。 研究Linux内核的链表和散...

    散列表实现电话号码查询系统java

    数据结构课程设计,用散列表实现电话号码添加、查询,java语言,附软件截图,课程设计报告。

    C语言设计散列表实现电话号码查找系统

    基本要求: (1)设每个记录有下列... (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; (3)采用一定的方法解决冲突; (4)查找并显示给定电话号码的记录; (5)查找并显示给定用户名的记录。

    数据结构课程设计 散列表的应用:插入买票

    数据结构课程设计 散列表的应用:插入买票

    hash散列表的三种实现

    散列的C语言实现:链地址法、线性探测法、双重散列表

    散列表之链接法解决冲突

    散列表在进行映射的时候经常会发生冲突,这里采用链接法来解决链接法映射冲突带来的问题

    数据结构散列表编写的电话本及冲突处理源码

    数据结构散列表编写的电话本及冲突处理源码,散列表,哈希表,存储数据,电话本,散列表,哈希表,存储数据,电话本

    数据结构课程设计(基于散列表的程序相近度检测系统和旅游交通查询系统)

    数据结构课程设计报告 题目1:基于散列表的程序相近度检测系统 ——采用的方法:哈希散列函数,二分查找 题目2:旅游交通查询系统 ——采用的方法:二维链表与图

    散列表实现电话号码查找系统

    设计散列表实现电话号码查找系统。 【基本要求】 1) 设每个记录有下列数据项:电话号码、用户名、地址; 2) 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; 3) 采用一定的方法解决冲突; 4) 查找并...

    在cuda上用gpu实现散列表

    在cuda上用gpu实现散列表 在cuda上用gpu实现散列表

    散列表通讯录系统

    一个用c语言编写的散列表通讯录系统,实现了增删改查功能。

Global site tag (gtag.js) - Google Analytics