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

时间:2024-04-02 15:31:31

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

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

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

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

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

哈希算法

根据数据量预先设置一个长度为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   6 3

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

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

两数之和

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

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

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

输出

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

 单词模式匹配问题

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

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

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

输出

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