博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找算法
阅读量:5290 次
发布时间:2019-06-14

本文共 897 字,大约阅读时间需要 2 分钟。

  查找算法的定义是什么?维基百科的解释为: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

你可能感兴趣的文章
UI基础--手写代码实现汤姆猫动画
查看>>
Python+pytesseract+Tesseract-OCR图片文字识别(只适合新手)
查看>>
使用gitbash来链接mysql
查看>>
docker镜像管理基础
查看>>
黑盒测试和百合测试的优缺点对比
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
装饰者模式
查看>>
右侧导航栏(动态添加数据到list)
查看>>
用Nginx+Lua(OpenResty)开发高性能Web应用
查看>>
81、iOS本地推送与远程推送详解
查看>>
Sharepoint online 如何使用asp.net开发项目!!!
查看>>
C#基础_注释和VS常用快捷键(一)
查看>>
http协议
查看>>
动态调用webservice
查看>>
2017-05-18
查看>>
python带header
查看>>
虚拟DOM
查看>>
IClient for js开发之地图的加载
查看>>
用css画三角形(提示框三角形)
查看>>
Uber中国在地方城市的人员架构是怎样的?
查看>>