二分查詢 系統自帶函式

2021-10-19 05:31:51 字數 695 閱讀 1964

#include

#include

#include

using

namespace std;

int arr[

100]

;int

main()

int target;

//輸入要查詢的數

scanf

("%d"

,&target)

;sort

(arr,arr+n)

;//二分查詢的前提是已經排好序的序列

int position=

lower_bound

(arr,arr+n,target)

-arr;

//lower_bound函式返回的是位址,因此需要減去arr,才能得到下標值。

if(position!=n&&arr[position]

==target)

else

return0;

}

小結:

①:二分查詢的前提是必須為有序序列,可以利用c++自帶的sort()函式進行排序。

②:系統自帶的lower_bound()函式,返回的是位址,因此需要減去陣列名(即陣列首位址)才能得到下標。如果序列中存在所要查詢的目標值,則返回位址,如果不存在,會返回大於他的第乙個數的下標,如果這個目標值比序列最大的數還大,則返回n.

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

bsearch 函式(二分查詢)

原部落格 bseach 函式用於二分查詢。void bsearch const void key,const void base,size t nmem,size t size,int comp const void const void key為要查詢的數,base為該陣列,nmem為查詢長度 一...

二分查詢的函式

二分查詢,乙個常用的查詢的演算法,只要涉及二分法,你要用正常的演算法會很大可能會報錯 時間超時,因為測試資料很誇張,有多誇張呢,差不多0 n 10,00,000,000 只要寫二分你就能得到ac啦 二分查詢就是巧妙的判斷,3個數掌控著陣列.資料需要是排好序的.以下是二分查詢函式 小到大排序 int ...