07_查找

查找概念

  • 查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。

  • 关键字(Key)是数据元素中某个数据项的值,又称为键值。可以标识一个数据元素,也可以标识一个记录中的某个数据项。

    若关键字可以唯一标识一个记录,则称为此关键字为主关键字(Primary Key)

    可以识别多个数据元素(或者记录)的关键字,我们称为次关键字(Secondary Key)

**查找(Searching)**就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或者记录)

静态查找表(Static Search Table):只作 查找操作 的 查找表(可以考虑线性表结构来组织数据)

  1. 查询某个“特定的“数据元素是否在查找表中
  2. 检索某个”特定的“数据元素喝各种属性

动态查找表(Dynamic Search Table):在查找过程中同时插入表中不存在的数据元素,或者从查找表中删除已经存在的某个元素(可以考虑二叉排序树的查找技术)

  1. 查找时插入数据元素
  2. 查找时删除数据元素

顺序表查找

**顺序查找(Sequential Search)**又叫线性查找,是最基本的查找技术 , 它的查找过程是:从表中第一个(或最后一个)记录开始,逐步进行记录的关键字喝给定值比较,若某个记录的关键字喝给定值相等,则查找成功;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,查找不成功。

查找算法

/* 定义 a 的元素值下标从1开始 */
int SequentialSearch(int *a,int n,int key)
{int i;a[0]=key;i=n;while(a[i] !=key){i--;}return i; /*返回0则说明查找失败了*/
}

有序表查找

折半查找

折半查找(Binary Search)技术,又称为二分查找。它的前提是线性表中的记录必须是关键码有序(通常从小到大有序) ,线性表必须采用顺序存储。折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所以查找区域无记录,查找失败为止。

// 假设我们现在有这样一个有序裴数组{0,l,16,24,35,47,59,62,73,88,99}
// 除 0 下 标外共 10 个数字 对其进行查找是否存在 62 这个数
/* 折半查找 */
int BinarySearch(int *a,int n ,int key)
{int low,high,mid;low=1;					/* 定义最低下标为记录首位 */high=n;					/* 定义最高下标为记录末位 */while(low<high){mid=(low+high) /2;	/* 折半 */if(key < a[mid])    /* 若查找值比中值小 */hight=mid-1;    /* 最高下标调整到中位下标小一位 */else if (key > a[mid]) /* 若查找值比中值大 */low=mid+1;		/* 最低下标调整到中位下标小一位 */else 	return mid;		/* 若相等,则说明mid即为查找到的位置 */}return 0;
}

插值查找

折半查找代码的第11行,略微等式变换:
m i d = l o w + h i g h t 2 = l o w + 1 2 ( h i g h − l o w ) mid=\frac{low+hight}{2} = low+\frac{1}{2}(high-low) mid=2low+hight=low+21(highlow)
也就是 mid 等于最低下标low加上最高下标 high 与 low的差的一半。
m i d = l o w + k e y − a [ l o w ] a [ h i g h ] − a [ l o w ] ( h i g h − l o w ) mid = low+\frac{key-a[low]}{a[high]-a[low]}(high - low) mid=low+a[high]a[low]keya[low](highlow)
只需要在折半查找算法的代码中更改一下第 11行代码如下 :

mid = low + (high-low)*(key -a[low])/(a[high]-a[low]); /* 插值 */

插值查找(Interpolation Search)是根据要查找的关键字key与查找表中最大最小记录的关键字比较后的查找方法,其核心在于插值的计算公式 k e y − a [ l o w ] a [ h i g h ] − a [ l o w ] \frac{key-a[low]}{a[high]-a[low]} a[high]a[low]keya[low]

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

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

相关文章

产业,到底需要什么大模型?

[ 产业究竟需要怎样的大模型&#xff1f;关于这个问题&#xff0c;本文作者便提出了他的看法&#xff0c;并总结了产业大模型目前阶段的三点落地挑战。一起来看看&#xff0c;或许可以帮助你更好地理解大模型与行业、与产业的融合。 写下这篇的起因&#xff0c;是前不久的一件事…

SAP ABAP下拉筛选框实现

1.屏幕定义 PARAMETERS: p_1 AS LISTBOX VISIBLE LENGTH 10.2.初始化下拉框 INITIALIZATION.PERFORM frm_sc_init.FORM frm_sc_init.DATA: list TYPE vrm_values. "定义list内表 要在TOP中定义&#xff0c;我写在了这里REFRESH:list[]."初始化下拉列表值…

C++STL---list模拟实现

本文我们模拟实现STL中的list&#xff0c;为了模拟实现list&#xff0c;实际上我们需要实现三个类&#xff0c;分别为&#xff1a;_list_node , _list_iterator , list。 我们先看一下这三个类的基本组成&#xff0c;主要是看看每个类中包含的变量有什么&#xff1a; namespa…

[已解决]FinalShell连接CentOS失败:java.net.UnknownHostException: centos

报错&#xff1a; 解决办法&#xff1a; 1.查看Windows:C:\Windows\System32\drivers\etc\ 2.拷贝hosts文件&#xff0c;用记事本打开hosts文件 3.添加主机名centos及对应IP地址&#xff0c;保存并粘贴覆盖C:\Windows\System32\drivers\etc\中的hosts文件 4.打开cmd命令窗口输…

Mac下删除系统自带输入法ABC,正解!

一、背景说明 MacOS 在 14.2 以下的系统存在中文输入法 BUG&#xff0c;会造成系统卡顿&#xff0c;出现彩虹圆圈。如果为了解决这个问题&#xff0c;有两种方法&#xff1a; 升级到最新的 14.5 系统使用第三方输入法 在使用第三方输入法的时候&#xff0c;会发现系统自带的 …

自定义一个自己的桌面挂件

"在这个信息纷繁的时代&#xff0c;每个人都在寻找那些能让日常生活更加便捷、高效的小工具。今天&#xff0c;我想邀请您加入一个温暖而富有创造力的项目——开发一款旨在提升工作与生活品质的桌面挂件。我们的目标很简单&#xff1a;创造一些小巧却强大的助手&#xff0…

RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,

报错信息如下&#xff1a; Error during startup: {error,{schema_integrity_check_failed,[{table_attributes_mismatch,rabbit_user,[username,password_hash,tags,hashing_algorithm,limits],[username,password_hash,tags,hashing_algorithm]},{table_attributes_mismatch…

【2024年5月备考新增】】 考前篇(34)《必备资料(17) - 论文串讲-项目采购管理》

过程定义输入工具技术输出实际应用规划 采购 管理决定采购什么、何时 采购、如何采购,并 记录项目对于产品和 服务的需求,并且寻 找潜在供应商1、立项管理文件2、项目章程3、项目管理计划.范围管理计划质量管理计划.资源管理计划.范围基准4、项目文件.里程碑清单.项目团队派工…

集合进阶相关基础及底层原理

集合体系结构 单列集合&#xff1a; Collenction 每次只能添加一个值&#xff0c;其中红色是接口&#xff0c;蓝色是实现类 图来自黑马程序员网课 List系列集合&#xff1a;添加的元素是有序&#xff0c;可重复&#xff0c;有索引 Set系列集合&#xff1a;添加的元素是…

Visual Studio的使用教程

Visual Studio是由微软开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于各种编程语言和平台的开发。它功能强大&#xff0c;支持开发桌面应用、Web应用、移动应用、云服务等。本文将详细介绍Visual Studio的基本功能和使用方法&#xff0c;帮助初学者…

搜索与图论:深度优先搜索

搜索与图论&#xff1a;深度优先搜索 题目描述参考代码 题目描述 参考代码 #include <iostream>using namespace std;const int N 10;int n; int path[N]; bool st[N];void dfs(int u) {// u n 搜索到最后一层if (u n){for (int i 0; i < n; i) printf("%d …

JavaScript 浏览器对象模型BOM 概念

JavaScript浏览器对象模型&#xff08;BOM&#xff09;是指JavaScript用来操作浏览器窗口、框架和历史记录的一组对象和方法。 BOM提供了一系列对象来操作浏览器的各个部分&#xff0c;使用BOM可以实现以下功能&#xff1a; 访问和操作浏览器窗口的对象&#xff0c;比如window…

QT5槽函数的重载问题

当你遇到信号或槽函数有重载时&#xff0c;需要使用 QOverload 来明确指定连接的是哪个重载版本。下面是如何在 connect 函数中区分重载的示例。 假设你有以下信号和槽&#xff1a;class DeviceOperationInterface : public QObject {Q_OBJECT signals:void ScaleX(bool _Scale…

Python基础用语:揭示编程世界的底层逻辑与无限可能

Python基础用语&#xff1a;揭示编程世界的底层逻辑与无限可能 Python&#xff0c;这门强大的编程语言&#xff0c;如同一位神秘的导师&#xff0c;引领我们走进编程的奇妙世界。掌握Python的基础用语&#xff0c;不仅意味着我们能够驾驭这门语言&#xff0c;更意味着我们能够…

ICPC2024 邀请赛西安站(7/8/13)

心得 [ICPC2024 Xian I] ICPC2024 邀请赛西安站重现赛 - 比赛详情 - 洛谷 7表示赛时ac了7个&#xff0c;8表示含补题总共ac数&#xff0c;13表示题目总数 题目 M. Chained Lights 打表&#xff0c;发现只有k1是YES //#include <bits/stdc.h> #include<iostream&…

模型评估指标(三)

模型评估指标三 1、模型评估回顾2、综合分类模型评估指标2.1、F1-Score与Fβ-Score2.2、灵敏度与特异度2.3、ROC曲线2.4、AUC曲线3、分类模型评估指标总结4、Sklearn模型评估指标1、模型评估回顾 本文接上篇:模型评估指标(二) 分类模型的评估与回归模型的侧重点不同,回归模型…

【智能算法】大蔗鼠算法(GCRA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;JO Agushaka受到自然界中大蔗鼠在交配季节和非交配季节觅食行为启发&#xff0c;提出了大蔗鼠算法&#xff08;Greater Cane Rat Algorithm, GCRA&#xff09;。 2.算法…

保利威观看页SDK 官方VUE开源项目 polyv-web-live-watch-sdk

一、安装:node、npm 二、下载源码 polyv-web-live-watch-sdk: 保利威直播观看 SDK 官方文档:保利威帮助中心 进入项目根目录 npm ci #安装依赖,如果 CI 失败,请试一下 npm ci --no-cache --registry=https://registry.npmmirror.com/ npm run dev #启动项目 执行完成后…

备份Docker部署的MySQL

文章目录 一、MySQL备份脚本1.本地部署的MySQL1.1 备份脚本1.2 添加权限1.3 执行脚本1.4 计划任务自动备份&#xff08;可选&#xff09; 2.备份Docker部署的MySQL 一、MySQL备份脚本 1.本地部署的MySQL 1.1 备份脚本 # vi mysql_backup.sh #!/bin/bash # MySQL连接参数 …

C++中成员函数和变量的存储、this指针的使用和const关键词以及常对象

文章目录 1.成员变量和成员函数分开存储2.this指针1.概念2.链式调用 3.空指针调用成员函数4.const修饰成员函数5.常对象 1.成员变量和成员函数分开存储 成员变量&#xff1a; 成员变量是类的数据部分&#xff0c;它们存储了类的实例&#xff08;对象&#xff09;的状态信息。当…