查找分类
在很多的时候,我们需要从元素的集合中查找出给定的关键字是否存在的过程,这个过程通常有两种结果:查找成功,查找失败。
用于搜索数据的集合,称之为搜索结构,一般是由统一类型的元素的集合。
而查找的环境分为静态环境和动态环境。
静态环境:在插入或者删除等操作前后搜索结构不会发生改变,向顺序表,链表。
动态环境:为了保证较高的搜索效率,在插入或者删除的前后搜索结构会自动进行调整,结构可能会发生改变,向搜索二叉树,AVL树,B_树,B+树这样的一些结构。
静态查找:只是查找给定关键字是否存在元素集合中。
动态查找:不光包含静态查找要求,还会插入一些元素集合中没有的元素或者删除一些没有的元素。
哈希
在顺序表,二叉搜索树,B树等搜索结构中进行查找的时候,元素的关键码和元素的存储位置并没有什么直接关系,查找的效率取决于元素的比较次数。
而理想的搜索结构是不经过任何的比较,直接从搜索结构中找到想要的元素。因此,我们构造出了这样的一种搜索结构,使元素的关键码和它的存储地址建立起来一个一一对应的关系address=Hash(key)。这就是哈希查找,这个函数就称之为哈希函数,这种结构我们称之为哈希表。
在插入元素的时候,我们对元素的key进行函数元素,计算出它的存储位置。
同样的,在查找元素的时候,我们对给定元素的key进行同样的运算,计算出它的hash地址