查找的知识点总结

本文总结了查找算法,包括顺序查找、二分查找、插值查找、斐波那契查找和哈希查找。顺序查找适用于小数据文件,二分查找和插值查找适用于已排序数据,斐波那契查找通过斐波那契数列优化查找,而哈希查找提供快速查找,理想时间复杂度为O(1)。各种查找方法各有优缺点,适用于不同的场景。
摘要由CSDN通过智能技术生成

        说到排序必然就要说到查找,所谓查找(或搜索)指的是从数据文件中找出满足某些条件的记录,用来查找的条件称为“键值(key)”,就如同排序所用的键值一样。一次查找所用的时间很短,但当程序中需要大量使用查找操作的时候,查找的时间消耗效率就显得非常重要。

        同排序一样,可根据数据量的大小将查找分为内部查找和外部查找。从另一个角度看,又可分为静态查找动态查找,定义如下:

           1、静态查找:查找的表格或文件的内容不会被改动,例如符号表的查找就是一种静态查找。

           2、动态查找:查找的表格或文件的内容可能会被改动,例如在树状结构中所谈的B树查找就属于一种动态查找。

        常见的查找方法有顺序查找、二分查找、斐波那契查找、插值法、哈希法、m路查找树、B树等。现一一介绍:

    一、顺序查找

        通常用于未经排序的文件,又称为线性查找。查找的过程从文件第一项数据开始,按序比较每一个键值。因此顺序查找的平均比较次数为(n+1)/2。

        当n很大时,顺序查找并不适合,它是一种适用于小数据文件的查找方法。

        其优点仅仅是文件或数据事前不需要经过任何的处理与排序,其缺点是速度慢。

    二、二分查找

        若要查找的数据已经事先排序好,则可以使用更快的查找方法,如二分查找。二分查找法是将数据分割成两个部分并比较待查找的键值与中间值的大小,若相等,则找到,否则进入可能存在的部分,再分割,如此往复,直到找到或确定不存在。

        使用二分查找要求被查找的数据事先已排序,且数据量不能太大,必须能在内存中执行(所以是内部查找)。此法适用于不需要增删的静态数据。因为每次查找都会比上一次少一半,所以最多只需要比较log(n) + 1或log(n+1)次,时间复杂度为O(logN)。

    三、插值查找

        又叫做插补查找法,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值