算法-查找-线性表的查找(顺序查找,二分查找,分块查找)

本文详细介绍了线性表的三种查找方法:顺序查找、二分查找和分块查找。顺序查找适用于各种线性结构,但效率较低;二分查找要求数据有序,适用于顺序存储结构;分块查找结合了顺序与二分查找,通过索引表提高效率。文章还提及了在不同查找方法中数据结构的选择和操作。
摘要由CSDN通过智能技术生成

这里介绍几种基于线性表的查找方法:

  • 顺序查找
  • 二分查找
  • 分块查找

查找的定义是:给定一个值K,在含有n个结点的表中找出关键字等于给定值K的结点。若找到,则查找成功,返回该结点的信息或该结点在表中的位置;否则查找失败,返回相关的指示信息。

1、顺序查找

基本思想:从数据的一端开始查找,比较元素是否与查找元素相同,若有则查找成功,直到另一端结束。既适用于线性表的顺序存储结构,也适用于线性表的链式存储结构,但查找效率较低。

2、二分查找

也称为对半查找
基本思想:将待查找元素与序列中间值进行比较,若相等则找到,大于中值,则可以在右半边继续开始同样的查找工作,小于中值,则在左边;

  • 要求数据是有序的,向量作为存储结构,链表是无法实现二分查找的
  • 二分查找只适用顺序存储结构。为保持表的有序性,在顺序结构里插入和删除都必须移动大量的结点。因此,二分查找特别适用于那种一经建立就很少改动、而又经常需要查找的线性表。

3、分块查找

也称索引顺序查找,性能介于顺序查找和二分查找

  • 基本思想:将数据进行分块,并用一个索引不表存储相关信息;将数据分成若干块,其中前一块的最大值不能大于后一块的最小值,用一个索引表存储每个块中的最大值和块的起始位置,块中的元素可以是无序的,但索引表必须是有序的。
  • 查找思路:先在索引表中查找,从而找到数据所在的块,然后在相应的块中的进行顺序查找,找到具体的位置。(基本思路就是先找到数据的范围,从而进行下一
    步的查找)

因为各查找方法应用的数据结构不尽相同,因此这里分开对之进行测试训练

顺序查找:

#include <iostream>
using namespace std;
const int N = 10;

int seqsearch(int (&a)[N], int k);

int main()
{
    int k, n = 10;
    int s[] = {
  5,6,2,3,9,8,4,1
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值