查找算法

  查找算法的定义是什么?维基百科的解释为:a search algorithm is an algorithm for finding an item with specified properties among a collection of items(20150327)。

  既然已经知道了查找算法的定义(未找到对查找算法的权威定义,因此使用维基百科的定义),那么如何能够得到一个快速的查找算法?这要求我们知道查找的本质。

      在百度百科中,对查找的定义为:在一些(有序的/无序的)数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找(20150327)。

      定义中并没有给我们说明查找的本质是什么,它只是从结果上反推出了查找这个词的意义。查找是一个过程,一个用于从一群元素中得到带有特定属性元素的过程。那么这个过程是如何进行的?很明显,这个过程是通过对比验证来进行,也就是说这个过程实际上是一个去掉不符合给定属性元素的过程。那么很自然的,也就能得到查找的本质-去掉不符合给定属性的元素。

      根据这个本质可以知道,从n个数据元素中得出指定元素的最快查找算法是一次比较就能够去掉n-1元素(0次就能够去掉的不切合实际,不考虑)。也就说,如果说我们需要一个规则来确定这个算法是不是高效的查找算法,那么就可以看它一次比较能够去掉的元素个数。

      穷举,最简单粗暴的查找算法,就是从元素集中把元素一个个拿出来,将其属性与给定的属性对比,以决定是否是需要的元素。由于其一次最多只能过滤掉一个元素,因此,其效率最低。

      二分查找,其一次比较最多能过滤掉总数量一半的元素。因此其效率相比穷举,好了很多。

      n叉树,一次比较最多能过滤掉(n-1)。因此相比二分查找又要好,更进一步。

      理想hash表,由于一次比较必定能够过滤掉(n-1)个元素。因此其效率最高。

      从上面的理解可知,查找算法一般都可归为n叉树。当树的分支为1时,查找所用算法为穷举。当树的分支为n时,查找所用算法为理想hash表。

      

转载于:https://www.cnblogs.com/long-wu/p/4371643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值