陣列 二分查詢 簡單

2021-08-20 08:55:13 字數 731 閱讀 7121

描述

給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target,用o(logn)的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1。

在陣列 [1, 2, 3, 3, 4, 5, 10] 中二分查詢3,返回2。

挑戰

如果陣列中的整數個數超過了2^32,你的演算法是否會出錯?

分析

對於已排序的陣列進行二分查詢,將該陣列nums的兩端分別設為left, right,求取其mid。

如果nums[mid] > target,則right = mid

如果nums[mid] < target,則left = mid

如果nums[mid] == target,則對mid--,直到nums[mid] != target,返回最後的結果,即為target第一次出現的下標。

題目鏈結

程式

class solution 

int binarysearch2(vector&nums, int target, int left, int right)

else if(nums[mid] < target)

else

}return -1;

}};

陣列 二分查詢

package a array.a twopointssearch 二分查詢,增刪。優點 查詢速度比無序陣列快 缺點 刪除慢,因為資料項必須向前移動來填補已刪除資料項的洞 增加慢,需要移動大於增加數所對用索引後面的所有值 author administrator author administrat...

二分查詢(簡單版) 陣列下標表示

如果不是從一組隨機的序列裡查詢,而是從一組排好序的序列裡找出某個元素的位置,則可以有更快的演算法 例 11.4.折半查詢 include define len 8 int a len int binarysearch int number return 1 int main void 由於這個序列已...

E簡單二分查詢

簡單二分查詢 面對二分查詢,主要是你的思路 第一步 你得把陣列有序的排列,一般選擇從小到大。第二步 把l,r,m確定下來。然後看看你得key 如果,key m,你運氣太好一下子就找到了 如果,key如果,key m,此時你考慮在你的右邊找。從小到大排列為例 第三步 迴圈著,就看你的結束條件了,當然了...