#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 ...