数据结构学习笔记之查找基本概念与线性结构的查找算法

本文介绍了数据结构中的查找概念,包括查找表、静态与动态查找表,重点讲解了线性结构的查找算法:顺序查找、有序表的顺序查找、折半查找和分块查找。顺序查找在无序表中的平均查找长度为n+1,有序表中为(n+1)/2。折半查找的时间复杂度为O(log2n)。分块查找结合了索引查找和块内查找,能有效提高查找效率。
摘要由CSDN通过智能技术生成

一、基本概念

1、查找的定义

  • 在数据集合中寻找满足所给条件的数据元素的过程,称之为查找;查找的结果有且只有两种:成功和失败,换句话就是:要么从集合中找到至少一个满足条件的元素,要么在集合一个也找不到满足条件的元素

2、查找表

  • 也叫做查找结构
  • 待进行查找的数据集合称为查找表,其数据元素的类型往往是一样的,可以是数组或链表等。对链表进行的操作一般有:
    确定某个值是否在查找表中
    从查找表中筛选出满足特定条件的元素的各种属性
    从查找表中确定一个用于进行元素插入操作的位置
    从查找表中寻找满足删除条件的元素进行删除操作

3、静态查找表与动态查找表

  • 当一个查找表的所有操作,只涉及到元素确定,也即是上面的 ①②,那么这种查找表就称为静态查找表。适合静态查找表的查找算法有:顺序查找、折半查找和散列查找
  • 相反的,当一个查找表的全部操作涉及元素修改,即上面的 ③④,那么这种查找表就称之为动态查找表;适合动态查找表的查找算法有:二叉排序树查找、散列查找等

4、关键字与平均查找长度

  • 关键字,是指数据元素中能够唯一标识该数据元素的数据项的值,例如学生信息表中的学号就是一个具体的学生信息的关键字;基于关键字的查找,其查找成功的结果往往是唯一确定的。
  • 在查找过程中,一次查找的长度指需要比较的关键字的次数,平均查找长度则是指整个查找过程中进行关键字比较的次数的平均值
    在这里插入图片描述
  • Pi 是第 i 个数据元素的概率,一般认为查找表中的元素是等概率的,即表长的倒数;
  • Ci 是第 i 个数据元素所需进行的比较次数。
  • 平均查找长度,往往用于衡量一个算法是否高效。

二、针对线性结构的查找算法

  • 针对线性结构的查找算法,也是诸多查找算法中较为容易实现的算法,有顺序查找、折半查找和分块查找

1、顺序查找

  • 也称为线性查找,分为对一般无序线性表的顺序查找和针对关键字有序的顺序表进行查找。

1.1、一般线性表的顺序查找

  • 这是最为简单的查找,其思想就是从表的一端按下标依次比较直到表尾,若找到则返回元素下标,否则返回查找失败,代码如下:
int SimpleSeqSearch(int arr[], int len, int keyValue)
{
   
	for(int i=0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御承扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值