B : DS靜態查找之折半查找

Description

給出一個隊列和要查找的數值,找出數值在隊列中的位置,隊列位置從1開始

要求使用折半查找算法

Input

第一行輸入n,表示隊列有n個數據

第二行輸入n個數據,都是正整數,從小到大,用空格隔開

第三行輸入t,表示有t個要查找的數值

第四行起,輸入t個數值,輸入t行

1 <= n, t <= 10000

Output

每行輸出一個要查找的數值在隊列的位置,如果查找不成功,輸出字符串error

Sample

Input

8
11 22 33 44 55 66 77 88
3
22
88
99

Output

2
8
error

解題思路

這道題核心思想是二分查找算法

int BinarySearch(int target, int l,int r)
{//先判斷左右邊界是否有問題if (target > arr[r])return 0;else if (target < arr[l])return 0;while (l < r){int mid = l+r>>1;//左區間為[1,mid],右區間為[mid+1,r]if (arr[mid] == target)  return mid;//若沒有找到,則不斷二分壓縮數組else if (arr[mid] > target) r = mid;else l = mid + 1;}return arr[l]==target?l:0;
}

AC代碼

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 10010;
int arr[N];int BinarySearch(int target, int l,int r)
{//先判斷左右邊界是否有問題if (target > arr[r])return 0;else if (target < arr[l])return 0;while (l < r){int mid = l+r>>1;//左區間為[1,mid],右區間為[mid+1,r]if (arr[mid] == target)  return mid;//若沒有找到,則不斷二分壓縮數組else if (arr[mid] > target) r = mid;else l = mid + 1;}return arr[l]==target?l:0;
}
int main()
{int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> arr[i];}int t;cin >> t;while (t--){int x;cin >> x;int ret = BinarySearch(x, 1, n);if (ret)cout << ret << endl;else cout << "error" << endl;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207788.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VQVAE

68、VQVAE預訓練模型的論文原理及PyTorch代碼逐行講解_嗶哩嗶哩_bilibili本期視頻主要講解大規模無監督預訓練模型之VQVAE的論文原理以及PyTorch代碼逐行講解&#xff0c;希望對大家理解VQVAE以及圖像生成有幫助。, 視頻播放量 9920、彈幕量 80、點贊數 485、投硬幣枚數 322、收…

Linux:dockerfile編寫搭建tomcat練習(9)

我使用的httpyum倉庫 本地使用了5個文件&#xff0c;tomcat使用的官網解壓直接用的包】 Dockerfile 主配置文件 基于centos基礎鏡像 jdk1.8.0_91 java環境 run.sh 啟動腳本 centos.repo 倉庫文件 tomcat 源碼包 vim Dockerfile寫入FROM centos MAINTAINER ta…

一個 postman實現參數化讓我丟掉了一份20k的offer

什么時候會用到參數化 比如&#xff1a;一個模塊要用多組不同數據進行測試 驗證業務的正確性 Login模塊&#xff1a;正確的用戶名&#xff0c;密碼 成功&#xff1b;錯誤的用戶名&#xff0c;正確的密碼 失敗 postman實現參數化 在實際的接口測試中&#xff0c;部分參數…

C++ Boost提供的六種進程間通信技術介紹

作者:令狐掌門 技術交流QQ群:675120140 博客地址:https://mingshiqiang.blog.csdn.net/ 文章目錄 一、共享內存(Shared Memory)1.1 共享內存的原理創建共享內存段映射到進程地址空間進程間的數據訪問同步訪問生命周期管理安全性和資源限制實際應用1.2 boost共享內存代碼演…

Ubuntu22.04安裝和卸載軟件的命令行

一、安裝 sudo apt install xxx 二、卸載 sudo apt remove xxx 三、卸載依賴包(可選) 第二步軟件卸載之后&#xff0c;有一些依賴包沒有被卸載。可以使用sudo apt autoremove xxx來卸載。如果不卸載應該也沒什么影響

Andorid sudio 換行方法

1.遇到的問題&#xff0c;二維碼內容要換行 String text "成績&#xff1a;1000 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff…

阿里云服務器2核8G/4核16G/8核32G配置選擇經濟型、通用算力型、通用型哪個好?

2核8G/4核16G/8核32G配置的阿里云服務器在阿里云活動中目前有經濟型e、通用算力型u1、通用型c7和通用型g8y四種實例可選&#xff0c;雖然配置相同&#xff0c;但是這些實例規格之間的價格差別是很大的&#xff0c;以2核8G配置為例&#xff0c;活動價格最便宜的經濟型e實例2核8G…

2023亞太五岳杯量子計算挑戰賽數學建模思路代碼模型論文

2023五岳杯數學建模思路&#xff1a;比賽開始后第一時間更新&#xff0c;獲取見文末名片 今年&#xff0c;APMCM亞太地區大學生數學建模競賽組委會正式和玻色量子、中國移動云能力中心等多家單位達成合作。 開展APMCM校企合作高校巡回學術講座活動&#xff0c;為企業、高校搭…

LeetCode435. Non-overlapping Intervals

文章目錄 一、題目二、題解 一、題目 Given an array of intervals intervals where intervals[i] [starti, endi], return the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping. Example 1: Input: intervals [[1,2]…

vue router之route和router的區別

1、區別 用一句話來概括這兩個區別就是route是用來獲取路由信息的&#xff0c;router是用來操作路由的。 2、route 2.1什么是route&#xff1a; route是一個路由對象&#xff08;route object&#xff09;表示當前激活的路由的狀態信息&#xff0c;它包含了當前URL解析得到的…

mysql存json數據時的查詢辦法

很多時候mysql的一列當中存的是json格式的數據&#xff0c;這時候如果要查詢某個key對應的值的時候要如何查詢呢&#xff0c;這里記錄一種查詢方法&#xff1a; json列的值&#xff1a; {“InventoryMainTypeCode”: 1, “InventoryMainTypeName”: “GOOD”} 現在要查詢Inve…

win10 筆記本卡頓優化

Windows SysMain 服務是 Windows 操作系統中的一個關鍵組件&#xff0c;它的作用是啟用系統的 SuperFetch 功能。SuperFetch 旨在改善系統的性能&#xff0c;通過預加載常用的應用程序和文件到內存中&#xff0c;以加速它們的啟動和響應時間。SysMain 服務負責管理 SuperFetch …

Python并發-線程和進程

一、線程和進程對應的問題 **1.進程&#xff1a;**CPU密集型也叫計算密集型&#xff0c;指的是系統的硬盤、內存性能相對CPU要好很多&#xff0c;此時&#xff0c;系統運作大部分的狀況是CPU Loading 100%&#xff0c;CPU要讀/寫I/O(硬盤/內存)&#xff0c;I/O在很短的時間就可…

C語言之函數

目錄 main函數和庫函數 什么是函數 函數定義 函數頭&#xff08;function header&#xff09; 1.返回類型&#xff08;return type&#xff09; 2.函數名&#xff08;function name&#xff09; 3.形參聲明&#xff08;parameter type list&#xff09; 函數體&#xff…

mybatisplus手動獲取數據源執行非主數據庫事務

mybatisplus手動獲取數據源執行非主數據庫事務 class A {// 事務管理器Resourceprivate DataSourceTransactionManager dataSourceTransactionManager;Autowiredprivate DataSource dataSource; // 最終是com.baomidou.dynamic.datasource.DynamicRoutingDataSource類型public…

通過靜態HTTP實現負載均衡

在當今的互聯網環境中&#xff0c;隨著用戶數量的不斷增加和業務需求的不斷擴大&#xff0c;單臺服務器往往無法承受所有的訪問壓力。為了確保網站的可用性和性能&#xff0c;負載均衡成為了一種常見的解決方案。本文將探討如何通過靜態HTTP實現負載均衡&#xff0c;以提升網站…

認識系統服務daemons

什么是daemon與服務&#xff08;service) 常駐內存的是進程&#xff0c;可以提供一些系統或網絡功能&#xff0c;這就是服務。實現service的程序稱為daemon。也就是說要想提供某種服務&#xff0c;daemon實在后臺運行的。 daemon的分類&#xff1a; 1&#xff09;可獨立啟動…

【CSP】202209-1_如此編碼Python實現

文章目錄 [toc]試題編號試題名稱時間限制內存限制題目背景題目描述輸入格式輸出格式樣例1輸入樣例1輸出樣例2輸入樣例2輸出樣例3輸入樣例3輸出樣例3解釋子任務提示Python實現 試題編號 202209-1 試題名稱 如此編碼 時間限制 1.0s 內存限制 512.0MB 題目背景 某次測驗后&#x…

【Angular開發】2023年促進您開發的最佳Angular庫

如果你是一名開發人員&#xff0c;你可以理解平臺的重要性&#xff0c;它可以加快開發過程&#xff0c;顯著減少編碼時間和工作量。 根據StackOverflow開發者2021年的調查&#xff0c;Angular是其中一個令人驚嘆的平臺&#xff0c;它一直贏得人們的喜愛&#xff0c;并獲得了全…

【vtkWidgetRepresentation】第六期 vtkFinitePlaneRepresentation

很高興在雪易的CSDN遇見你 &#xff0c;給你糖糖 歡迎大家加入雪易社區-CSDN社區云 前言 本文分享VTK中的平面Plane表示方法&#xff0c;希望對各位小伙伴有所幫助&#xff01; 感謝各位小伙伴的點贊關注&#xff0c;小易會繼續努力分享&#xff0c;一起進步&#xff01; …