A : DS静态查找之顺序查找

Description

给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始

要求使用带哨兵的顺序查找算法

Input

第一行输入n,表示队列有n个数据

第二行输入n个数据,都是正整数,用空格隔开

第三行输入t,表示有t个要查找的数值

第四行起,输入t个数值,输入t行

Output

每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error

Sample

Input
8
33 66 22 88 11 27 44 55
3
22
11
99
Output
3
5
error

解题思路

想了解什么是哨兵查找算法,首先可以看一下普通的顺序查找代码

查找一个元素在数组中的下标,如果存在就返回其下标

int NormalSearch(int target, int n)
{int length = n;for (int i = 1; i <= length; i++) {if (arr[i] == target) {return i;}}return 0;
}

与常规的顺序查找不同的是,常规查找需要做两次判断,判断下标是否超过长度和是否找到;

哨兵查找算法只需要一个判断,在数据量较大时可以提高效率

int sentrySearch(int target,int n)
{//如果第一个元素就是target直接返回1if (arr[1] == target)return 1;//将第一个元素保存起来int temp = arr[1];//将目标值放在第一个元素arr[1] = target;int j = n;while (target != arr[j])--j;//查找完毕,复原第一个元素arr[1] = temp;return j > 1 ? j : 0;
}

AC代码

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 10010;
int arr[N];
int sentrySearch(int target,int n)
{//如果第一个元素就是target直接返回1if (arr[1] == target)return 1;//将第一个元素保存起来int temp = arr[1];//将目标值放在第一个元素arr[1] = target;int j = n;while (target != arr[j])--j;//查找完毕,复原第一个元素arr[1] = temp;return j > 1 ? j : 0;
}int NormalSearch(int target, int n)
{int length = n;for (int i = 1; i <= length; i++) {if (arr[i] == target) {return i;}}return 0;
}int main()
{int n;while (cin >> n) {for (int i = 1; i <= n; i++) {cin >> arr[i];}int t;cin >> t;while (t--){int x;cin >> x;int ret = sentrySearch(x, n);if (ret)cout << ret << endl;else cout << "error" << endl;}}return 0;
}

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

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

相关文章

Spring-retry失败重试机制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、引入依赖二、主启动类上加EnableRetry三、Server层注意 四、失败后回调方法总结 前言 提示&#xff1a;SpringBoot项目为例 原文链接&#xff1a;https://…

docker全解

docker全解 一、docker的基本概念 什么是docker? docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的Linux或Windows机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#…

MIT线性代数笔记-第26讲-对称矩阵及正定性

目录 26.对称矩阵及正定性打赏 26.对称矩阵及正定性 实对称矩阵的特征值均为实数&#xff0c;并且一定存在一组两两正交的特征向量 这对于单位矩阵显然成立 证明特征值均为实数&#xff1a; ​    设一个对称矩阵 A A A&#xff0c;对于 A x ⃗ λ x ⃗ A \vec{x} \lambda…

作业12.8

1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数。将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…

Matlab simulink PLL学习笔记

本文学习内容&#xff1a;【官方】2022小迈步之 MATLAB助力芯片设计系列&#xff08;一&#xff09;&#xff1a;电路仿真与模数混合设计基础_哔哩哔哩_bilibili 时域模型 testbench搭建 菜单栏点击simulink 创建空白模型 点击库浏览器 在PLL里面选择一种架构拖拽到画布。 如…

一文理解什么是交叉熵损失函数以及它的作用

今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。 作为一种损失函数&#xff0c;它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比&#xff0c;从而输出 loss 值&#xff0c;直到 loss 值收敛&#xff0c;可以认为神经网络模型训练完成。 那么这…

【Java用法】Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 + 数据排序

Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 数据排序 一、业务场景二、Hutool官网树结构工具2.1 介绍2.2 使用2.2.1 定义结构2.2.2 构建Tree2.2.3 自定义字段名 2.3 说明 三、具体的使用场景3.1 实现的效果3.2 业务代码3.3 实现自定义字段的排序 四、踩过的坑4.1 坑…

策略产品经理常用的ChatGPT通用提示词模板

产品策略&#xff1a;请帮助我制定一个策略产品的产品策略。 市场调研&#xff1a;如何进行策略产品的市场调研&#xff1f; 竞争分析&#xff1a;如何进行策略产品的竞争分析&#xff1f; 用户画像&#xff1a;如何构建策略产品的用户画像&#xff1f; 产品定位&#xff1…

交换排序(冒泡排序)(快速排序(1))

目录 1.交换排序 &#xff08;1&#xff09;冒泡排序 &#xff08;2&#xff09;快速排序 1.交换排序 基本思想&#xff1a;所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换排序的特点是&#xff1a;将键值较大的…

ambari hive on Tez引擎一直卡住

hive on tez使用./bin/hive启动后一直卡住&#xff0c;无法进入命令行 使用TEZ作为Hive默认执行引擎时&#xff0c;需要在调用Hive CLI的时候启动YARN应用&#xff0c;预分配资源&#xff0c;这需要花一些时间&#xff0c;而使用MapReduce作为执行引擎时是在执行语句的时候才会…

iPaaS架构深入探讨

在数字化时代全面来临之际&#xff0c;企业正面临着前所未有的挑战与机遇。技术的迅猛发展与数字化转型正在彻底颠覆各行各业的格局&#xff0c;不断推动着企业迈向新的前程。然而&#xff0c;这一数字化时代亦衍生出一系列复杂而深奥的难题&#xff1a;各异系统之间数据孤岛、…

基于SuperMap iObjects Java生成地图瓦片

作者&#xff1a;dongyx 前言 在GIS领域&#xff0c;地图瓦片技术作为GIS领域的关键技术&#xff0c;是提高地图服务性能的关键手段之一。通过预先生成地图的瓦片数据&#xff0c;可以显著提升用户访问地图时的响应速度和体验。SuperMap iObjects for Java作为一款强大的GIS开…

Docker, Docker-compose部署Sonarqube

参考文档 镜像地址: https://hub.docker.com/_/sonarqube/tags Docker部署文档地址 Installing from Docker | SonarQube Docs Docker-compose文档部署地址&#xff1a; Installing from Docker | SonarQube Docs 部署镜像 2.1 docker部署 # 宿主机执行 $. vi /etc/sysctl.conf…

Java注解详解

概述 注解是对程序代码进行标注和解释的一种方式。在Java中&#xff0c;注解提供了一种元数据形式&#xff0c;能够在程序中嵌入有关程序的信息&#xff0c;以便进行进一步的处理。注解通过使用符号来声明&#xff0c;如Override、Deprecated等。 注解和注释的区别 注释&…

Unity中Batching优化的GPU实例化(4)

文章目录 前言一、构建需要实例化的额外数据二、在顶点着色器&#xff0c;将实例化 ID 从 appdata 存入 v2f 传给片元着色器三、在片断着色器中访问具体的实例化变量三、使用代码修改Shader材质属性&#xff0c;实现GPU实例化后不同对象颜色不同的效果1、在C#测试脚本生成小板凳…

ReactJs笔记摘录

前言 以前2018年搞过一段时间react antd开发&#xff0c;兜兜转转又回到react世界。 TODO中 Hook函数 JSX语法 根元素与斜杠 注意局部的jsx片段也要加根元素: return (<div>{items.map((item) > (// 此处只能有一个根元素!!!<>...<div className&quo…

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 23 章:命名实体识别提示

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 23 章&#xff1a;命名实体识别提示 命名实体识别&#xff08;NER&#xff09;是一种允许模型对文本中的命名实体&#xff08;如人物、组织、地点和日期&#xff09;进行识别和分类的技术。 要在 ChatGPT…

微前端介绍

目录 微前端概念 微前端特性 场景演示 微前端方案 iframe 方案 qiankun 方案 micro-app 方案 EMP 方案 无界微前端 方案 无界方案 成本低 速度快 原生隔离 功能强大 总结 前言&#xff1a;微前端已经是一个非常成熟的领域了&#xff0c;但开发者不管采用哪个现…

Leetcode—290.单词规律【简单】

2023每日刷题&#xff08;五十一&#xff09; Leetcode—290.单词规律 实现代码 class Solution { public:bool wordPattern(string pattern, string s) {unordered_map<char, string> m1;unordered_map<string, char> m2;stringstream stro(s);string tmp;for(a…

(env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序

应公司需求&#xff0c;在特定情况下需要修改ip 在开发过程中出现的小插曲 1、第一种情况&#xff1a;重复声明 2、第二种情况&#xff1a; 应官方要求&#xff0c;需要跳转的 tabBar 页面的路径&#xff08;需在 pages.json 的 tabBar 字段定义的页面&#xff09;&#xff0…