二分查詢的函式

2021-08-19 11:26:10 字數 739 閱讀 2002

二分查詢,乙個常用的查詢的演算法,只要涉及二分法,你要用正常的演算法會很大可能會報錯:

時間超時,因為測試資料很誇張,有多誇張呢,差不多0≤n≤10,00,000,000

只要寫二分你就能得到ac啦;

二分查詢就是巧妙的判斷,

3個數掌控著陣列.

資料需要是排好序的.

以下是二分查詢函式**:

-小到大排序

int halfsearch(int arry,int start,int end,int key)

{ while(start<=end)

{ int mid=(start+end)/2;

if(arry[mid]==key)return mid;

else if(arry[mid]>key)end=mid-1;

else if(arry[mid]這樣你就暢通無阻了

想要從大到小的?

給你:int halfsearch(int arry,int start,int end,int key)

{ while(start<=end)

{ int mid=(start+end)/2;

if(arry[mid]==key)return mid;

else if(arry[mid]>key)start=mid+1;

else if(arry[mid]下次,咱來找到練手題.

給個圖示:

bye

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 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為查詢長度 一...

二分查詢函式的使用

二分查詢函式的使用 lower bound 和upper bound 都是利用二分查詢的方法在乙個排好序的陣列中進行查詢的。在從小到大的排序陣列中,lower bound begin,end,num 從陣列的begin位置到end 1位置二分查詢第乙個大於或等於num的數字,找到返回該數字的位址,不...