顺序查找(线性查找),折半查找(二分或对分查找),分块查找(索引顺序查找)

news2024/11/30 20:41:05

文章目录

  • 查找
    • 查找的基本概念
  • 线性表的查找
    • 一、顺序查找(线性查找)
    • 二、折半查找(二分或对分查找)
    • 三、分块查找(索引顺序查找)

查找

查找的基本概念

查找表
查找表是同一类型的数据元素(或记录)构成的集合。
关键字
关键字是数据元素中某个数据项的值。若此关键字能唯一的标识一个记录,那么此关键字称为主关键字。反之,称用以识别若干记录的关键字称为次关键字。
动态查找表和静态查找表
若在查找的同时对表执行修改操作(如插入和删除),则称相应的表为动态查找表,否则称为静态查找表。
查找算法的评价指标:
关键字的平均比较次数,也称平均查找长度。
ASL(Average Search Length)
在这里插入图片描述(关键字的比较次数的期望值)
n:记录的个数。
pi:查找第i个记录的概率(通常认为pi=1/n)
ci:找到第i个记录所需的比较次数

线性表的查找

//数据元素类型
typedef struct {
	KeyType key;//关键字域
	//...其他域
}ElemType;

typedef struct {
	ElemType* R;//存储空间的基地址
	int length;//当前长度
}SSTable;

一、顺序查找(线性查找)

int Search_Seq(SSTable ST, KeyType key) {
	int i;
	//若成功返回其位置信息,否则返回0;
	for (i = ST.length; i >= 1; i--) {
		if (ST.R[i].key==key) {
			return 0;
		}
	}
}

改进:把待查关键字key存入表头(“监视哨”),从后往前逐个比较,可免去查找过程中每一步都要检测是否查找完毕,加快速度。

//改进:加监视哨
int Seacher_Seq(SSTable ST, KeyType key) {
	int i;
	ST.R[0].key = key;
	for (i = ST.length; ST.R[i].key; --i);
		return i;
}

分析:
1.时间复杂度:O(n)
查找成功的平均查找长度,记录各记录查找概率相等。
在这里插入图片描述
2.空间复杂度:
申请了一个辅助空间:O(1)。
讨论:
1.查找表存储记录原则----按查找概率高低存储:
1)查找概率越高,比较次数越少。
2)查找次数越低,比较次数越多。
2.记录的查找概率无法测定时如何提高查找效率?
方法----按查找概率动态调整记录顺序:
1)在每个记录中设一个访问的频度域;
2)始终保持记录按非递增有序地排列;
3)每次查找后将刚查找的记录直接移至表头。

优点:
算法简单,逻辑次序无要求,且不同存储结构适用。
缺点:平均查找长度较大,查找效率低。

二、折半查找(二分或对分查找)

每次将待查记录所在区间缩小一半。

//折半查找
int SearchBin(SSTable ST, KeyType key) {
	int low = 1;
	int high = ST.length;//置区间初值
	while (low <= high) {
		int mid = (low + high) / 2;
		if (ST.R[mid].key == key) {
			return mid;//找到待查元素
		}
		else if(key<ST.R[mid].key) {//缩小查找区间
			high = mid - 1;//继续在前半截查找
		}else {
			low = mid + 1;
		}
		return 0;
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
折半查找的优点:效率比顺序查找高。
折半查找缺点:只适用于有序表,且限于顺序存储结构(对线性表无效)。

三、分块查找(索引顺序查找)

条件:1.将表分为几块,且表或者有序,或者分块有序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1255760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#文件操作File类vsFileInfo类和Directory类vsDirectoryInfo类

目录 一、File类vsFileInfo类 1.File类 &#xff08;1&#xff09;示例源码 &#xff08;2&#xff09;生成效果 2.FileInfo类 &#xff08;1&#xff09;示例源码 &#xff08;2&#xff09;生成效果 二、 Directory类vsDirectoryInfo类 1.Directory类 &#xff08;…

怎么在哔哩哔哩上引流?分享五个b站引流推广必备的几个方法

大家好&#xff0c;我是 小刘今天为大家分享的是抖音引流知识分享&#xff0c;今天咱们聊一些干货知识&#xff0c;绝对会让你们有一个重新的认知。哔哩的流量大&#xff0c;是毋庸置疑的&#xff0c;哔哩也是最早一批短视频平台。哔哩于2017年上线&#xff0c;一开始主要是通过…

基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目

演示视频&#xff1a; 基于SSM的企业订单跟踪管理系统&#xff08;有报告&#xff09;。Javaee项目 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringM…

Kotlin学习——kt入门合集博客 kt里的委派模式Delegation kt里的特性

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

2023年【N1叉车司机】新版试题及N1叉车司机作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N1叉车司机新版试题参考答案及N1叉车司机考试试题解析是安全生产模拟考试一点通题库老师及N1叉车司机操作证已考过的学员汇总&#xff0c;相对有效帮助N1叉车司机作业考试题库学员顺利通过考试。 1、【多选题】《中华…

基于U-Net的视网膜血管分割(Pytorch完整版)

基于 U-Net 的视网膜血管分割是一种应用深度学习的方法&#xff0c;特别是 U-Net 结构&#xff0c;用于从眼底图像中分割出视网膜血管。U-Net 是一种全卷积神经网络&#xff08;FCN&#xff09;&#xff0c;通常用于图像分割任务。以下是基于 U-Net 的视网膜血管分割的内容&…

公司注册资金认缴的好处有哪些

公司注册资金认缴的好处 1、减少投资项目审批&#xff0c;最大限度地缩小审批、核准、备案范围&#xff0c;切实落实企业和个人投资自主权。对确需审批、核准、备案的项目&#xff0c;要简化程序、限时办结。同时&#xff0c;为避免重复投资和无序竞争&#xff0c;强调要加强土…

LCR 047. 二叉树剪枝 和 leetCode 1110. 删点成林 + 递归 + 图解

给定一个二叉树 根节点 root &#xff0c;树的每个节点的值要么是 0&#xff0c;要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。节点 node 的子树为 node 本身&#xff0c;以及所有 node 的后代。 示例 1: 输入: [1,null,0,0,1] 输出: [1,null,0,null,1] 解释: 只有…

代码常见问题

1. 前端页面出现404了&#xff1a; 1&#xff09;那说明你该页面里面有某个接口地址&#xff08;url&#xff09;写错了&#xff0c;后台没有这个接口 2&#xff09;你后台写了这个接口&#xff0c;但是后台忘了重启服务了&#xff0c;这样的话前端也映射不上的 所以404的时…

安卓吸顶效果

当列表滑动时&#xff0c;图片逐渐消失&#xff0c;toolBar悬停在头部。 <?xml version"1.0" encoding"utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android"http://schemas.android.com/apk/res/android"x…

python--获取每张切片的不同PEF区间值的百分比

在全直径数字岩心中&#xff0c;如何获取每张切片的不同PEF区间值的百分比&#xff1f; import os import datetime from PIL import Image import numpy as np import csv import easygui as gclass Table(object):def __init__(self, table_data_path):self.table_data_path…

三菱GX WORRKS3 下载与安装

目录 下载 安装 准备好安装包 对电脑系统要求 安装 因为小编公司需要&#xff0c;所以开始了三菱plc软件的学习&#xff0c;并从今天开始记录学习&#xff0c;希望小编的内容能帮到你&#xff0c;对你的学习有帮助&#xff01; 下载 三菱电机官网 当然了&#xff0c;需要…

2023-11-26 事业-代号s-跨境物流-记录

摘要: 2023-11-26 事业-代号s-跨境物流-记录 跨境物流: 【结论】 中小卖家&#xff08;最低适合1个人经营的卖家&#xff09;首选以下两种物流&#xff0c;目前已知的是以下两种&#xff0c;后续有新的发现再更新。 1、云途物流&#xff08;YunExpress&#xff09;&#xff…

箱型图 Box Plot 数据分析的法宝

文章目录 一、箱形图的介绍二、六大因数三、Box plot的应用四、箱形图的优劣势五、图形拓展 一、箱形图的介绍 箱形图又称为盒须图、盒式图、盒状图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。在各种领域也经常被使用&#xff0c;…

一、Lua基础

文章目录 一、Lua是什么二、Lua特性&#xff08;一&#xff09;轻量级&#xff08;二&#xff09;可扩展&#xff08;三&#xff09;其它特性 三、Lua安装四、Lua应用 看到评论说&#xff0c;C让我见识了语言的严谨与缜密&#xff0c;lua让我见识到了语言的精巧与创新&#xff…

基于51单片机交通灯夜间模式+紧急模式_易懂版_(仿真+代码_报告_讲解)

J029 51单片机交通灯_易懂版__夜间紧急(仿真代码_报告_讲解&#xff09; 51单片机交通灯_易懂版_ 1 **讲解视频&#xff1a;**2 **功能要求**3 **仿真图&#xff1a;**4 **程序设计&#xff1a;**5 **设计报告**6 **资料清单&&下载链接&#xff1a;****资料下载链接&am…

佳易王商超便利店进销存管理系统软件下载,扫描商品自动计算金额支持扫码支付

佳易王商超便利店进销存管理系统软件下载&#xff0c;扫描商品自动计算金额支持扫码支付 软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。软件在关闭的时候&#xff0c;可以设置会员数据…

Windows安装mysql8.0

官网地址&#xff1a;MySQL :: MySQL Community Downloads 选择相应版本信息下载 默认选择点击下一步 默认配置点击next 设置密码 默认配置

多模态大模型总结1(2021和2022年)

常用损失函数 ITC &#xff08;image-text contrasctive loss&#xff09; CLIP中采用的对比损失&#xff0c;最大化配对文本对的余弦相似度&#xff0c;最小化非配对文本对的余弦相似度&#xff0c;采用交叉熵损失实现 MLM &#xff08;masked language modeling&#xff0…

【Linux】23、内存超详细介绍

文章目录 零、资料一、内存映射1.1 TLB1.2 多级页表1.3 大页 二、虚拟内存空间分布2.1 用户空间的段2.2 内存分配和回收2.2.1 小对象2.2.2 释放 三、查看内存使用情况3.1 Buffer 和 Cache3.1.1 proc 文件系统3.1.2 案例3.1.2.1 场景 1&#xff1a;磁盘和文件写案例3.1.2.2 场景…