關於二分查詢

2021-09-19 11:37:59 字數 1203 閱讀 2682

一:

/*

關於二分查詢:

1.查詢目標值:

當right=nums.size()-1時,判定條件應該為left<=right right賦值時也應該是mid-1;

當right=nums.size()時,判定條件應該為left=)目標值的數*/

int search(vector& nums, int target)

return right;

}/*可變形為查詢最後乙個小於(<)目標值的數:上述**最後返回right-1;*/

/*3. 查詢第乙個大於(>)目標值的數*/

int search(vector& nums, int target)

return right;}/*

返回最後乙個相同的數字的下乙個位置。

if (nums[mid] <= target) 判定條件多了乙個等號

最後返回為right-1;

可變形為查詢最後乙個不大於(<=)目標值的數:最後返回為right-1;

*/

#includeusing namespace std;

int binfindvalue(int* arr, int left, int right,int key)//遞迴二分查詢

int mid = (right - left + 1) / 2 + left;

if (arr[mid] == key)

if (arr[mid] < key )

if (arr[mid] > key)

}int binfindvaluenice(int* arr,int len,int key)//非遞迴二分查詢

int left = 0;

int right = len - 1;

while (left<=right)

else if (key > arr[mid])

else

}return pos;

}int main()

;int len = sizeof(arr) / sizeof(arr[0]);

cout << binfindvaluenice(arr,len,5) << endl;

cout << binfindvalue(arr,0,len-1,55) << endl;

return 0;

}

關於二分查詢

面試過很多人,對於初級程式設計師來說,我一般會給他簡單的已經比較成熟的演算法來考察他,一來來他對既有演算法的熟悉度,二來考察他對於一般程式設計問題的邏輯思維能力,二分查詢是有序數列中查詢的常用演算法,也是比較容易實現的查詢演算法之一,這個是stl的實現 template randomaccessit...

關於二分查詢

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 1 對數搜尋 英語 logarithmic search 2 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過...

關於二分查詢

luogu 1571 眼紅的medusa 二分模版題 include using namespace std int n,m,x,l,r,mid,cnt,a 110000 b 110000 c 110000 intmain if x b l cnt c cnt x for int i 1 i cou...