顺序查找,折半查找,分块查找


顺序查找
想象一下你在一堆乱七八糟的文件堆里找一份特定的文件。顺序查找就像你从文件堆的一头开始,一个一个地翻看,直到找到你要找的那份文件。如果找到了,你就知道自己的运气不错;如果翻到头都没找到,那只能说今天运气不佳。这种方法简单,但如果你有很多文件要翻,那就比较费时间。
折半查找
现在,假设你的文件是按字母顺序排列的,你要找的文件名是“张三”。折半查找就像是你先找到中间的文件,看看是不是“张三”。如果不是,你再猜“张三”是在前一半还是后一半,然后再找那一半的中间文件,如此反复,直到找到或者确定没有。这种方法比顺序查找快多了,特别是文件很多的时候。
分块查找
分块查找就像是你把文件分成几个小堆,每个小堆里的文件虽然没有顺序,但小堆之间是按顺序排列的。你还准备了一个小本子,记录每个小堆里最大的文件名和第一个文件的位置。当你要找文件时,先在小本子上找到可能包含你要找的文件的那个小堆,然后在那个小堆里慢慢找。这种方法结合了顺序查找和折半查找的优点,既方便快速定位到某个区域,又可以在区域内快速找到目标。
简单来说,这三种查找方法就像是不同的找东西策略:一种是盲目地一个个找;一种是聪明地先猜个大概位置再找;还有一种是先缩小范围再仔细找。每种方法都有它适用的时候,关键是看你要处理的数据是什么样的。
 

知识点链接
顺序查找(线性查找)
概念:顺序查找是一种基础的查找方法,适用于线性表。
一般线性表的顺序查找:
基本思想:从线性表的一端开始,逐个检查元素的关键字是否符合给定条件。
查找成功:返回元素在表中的位置。
查找失败:返回失败信息。
有序表的顺序查找:
基本思想:假设表是按关键字排序的,查找时如果发现当前元素的关键字小于待查找关键字,且下一个元素的关键字大于待查找关键字,则可以提前结束查找,因为后续元素的关键字都会更大。
平均查找长度:成功或失败的平均查找长度取决于元素在表中的位置。
优点:对数据存储方式和元素的有序性没有特别要求。
缺点:当数据量很大时,查找效率较低。
折半查找(二分查找)
概念:折半查找仅适用于有序的顺序表。
基本思想:通过比较中间元素与给定值,将查找范围缩小一半,然后继续在相应的半区进行查找,直到找到元素或确定元素不存在。
判定树:查找过程可以用二叉树描述,每个结点代表一个记录,查找成功或失败的路径长度即为查找长度。
时间复杂度:O(\log n)。
注意:折半查找要求数据采用顺序存储结构,并且元素必须按关键字有序排列。
分块查找(索引顺序查找)
基本思想:将查找表分为多个子块,每个块内的元素可以无序,但块之间保持有序。建立索引表,索引表中的元素包含各块的最大关键字和块内第一个元素的地址,索引表本身也是有序的。
查找过程:首先在索引表中确定待查找记录所在的块,然后在块内进行顺序查找。
平均查找长度:如果将长度为 n 的查找表分为 b 块,每块有 s 个记录,平均查找长度 L1 可以通过以下公式计算: L1 = \frac{n}{s} + s
优化:如果 s = \sqrt{n},则平均查找长度达到最小值 \sqrt{n} + 1。
高级优化:如果索引表采用折半查找,可以进一步提高查找效率。
 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值