数据查找算法(一)哈希算法

常见的数据查找算法主要有顺序查找,二分查找,深度优先遍历,广度优先遍历,哈希查找.

顺序查找是最简单的查找方式,需要对数据注意匹配,所以效率相对较低,不适合大数据量的查找.

二分查找虽然效率很好,但是要求数据必须是有序的,对数据进行排序通常需要很多的时间开销.

深度优先遍历和广度优先遍历对于大数据量的查找问题效率不高.

哈希查找由于查找速度快,查询、插入、删除操作简单等原因而被广泛使用。

哈希算法

根据数据量预先设置一个长度为M的数组,使用一个哈希函数F并以数据的关键字作为自变量,得到唯一的返回值,返回值的范围为0-m-1,这样就可以利用哈希函数F将数据元素映射到数组的某一位下标并把数据存放在对应位置上。查找时,利用哈希函数F计算该数据的存放下标,再到相应的位置取出查找的数据。

例如:3,8,6,11需要存储,哈希函数为F(x)=x%4

3%4 =3            8%4=0           6%4=2     11%4=3

 

8 63

此时,就会出现地址冲突问题。出现问题的原因是哈希函数没有设计好。如果设置的哈希函数能够将数据的关键字映射为一个唯一地址,查找的时间复杂度为O(1)。但是如果设计的不是很好,就会有很多冲突,就要查找很多次,最坏变为顺序查找.但是无论怎样做,地址冲突是无法避免的.

解决抵制冲突的方法是链地址法,二次再散列法,线性探测再散列法,建立公共溢出区。 

两数之和

输入一组数,从中找到和为m的两个数

例如,输入3 2 4 3 7 输出 3 3     2 4

输出

 单词模式匹配问题

输入两个字符串,一个是单词模式字符串,另一个是目标字符串.之后检查目标字符串是否为给定的单词模式.

例如:输入单词模式字符串一 二 二 一 和目标字符串苹果 香蕉 香蕉 苹果,二者模式相同,匹配成功.

输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值