二分查詢 整數 模版

2021-10-19 07:41:37 字數 963 閱讀 9955

一段區間,定義一種性質使得區間被一分為二

二分查詢即為尋找滿足性質或不滿足性質的區間的邊界

//區間被劃分為[l,mid]和[mid+1,r]

intbsearch_1

(int l,

int r)

}//區間被劃分為[l,mid-1]和[mid,r]

intbsearch_2

(int l,

int r)

return l;

}

description

在乙個給定的無重複元素的遞增序列裡,查詢與給定關鍵字相同的元素,若存在則輸出找到的位置,不存在輸出-1。

一組輸入資料,輸入資料第一行首先輸入兩個正整數n ( n < = 10^6 )和m ( m < = 10^4 ),n是陣列中資料元素個數,隨後連續輸入n個正整數,輸入的資料保證數列遞增。

隨後m行輸入m個待查詢的關鍵字key

若在給定的序列中能夠找到與關鍵字key相等的元素,則輸出位序(序號從0開始),否則輸出-1。

input

8 3

4 6 8 9 13 20 21 2268

17

output

12-1

#include

using namespace std;

int a[

100010];

intmain()

while

(m--)if

(a[l]

!=key)

printf

("-1\n");

else

printf

("%d\n"

,l);}}

return0;

}

模版 整數二分

確定乙個區間,使得目標值一定在這個區間內 從題目中找到一種性質 根據上述的性質,具體可以把整數二分劃分為兩大類問題 第一類 目標值是前半段的右端點 將 l,r l,r l,r 分成 l,mid 1 l,mid 1 l,mid 1 和 mi d,r mid,r mid,r 如果mid midmi d處...

二分查詢模版

用於一般的二分查詢 public static intbinsearch2 int arr,int target if arr mid target else return 1 1 為啥是 lo mid 1,hi mid 1 而不是 lo mid,hi mid 呢?看迴圈條件 while lo hi...

二分查詢解題模版

常規 樸素的二分查詢 在一維陣列中查詢乙個數,有返回索引,無則返回 1 int binary search int arr,int n,int val else if arr mid val else return 1 變體1 可以總結為00001111問題,查詢滿足條件的第乙個1 int bina...