题解 | #二分查找-I#
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int>& nums, int target) {
// write code here
int size=nums.size();
if(size==0){
return -1;
}
//取数组中的长度-1,二分法右边的元素
int num=size-1;
//二分法左边的元素
int p=0;
//左右两数的中间的位置
int mid;
//循环条件当左位置小于右位置
while(p<=num){
mid=(p+num)/2;
//中间位置等于所求
if(nums[mid]==target){
return mid;
}
//当位置元素小于所求左元素向右移
if(nums[mid]<target){
p=mid+1;
}
//当位置元素大于所求左元素向左移
else{
num=mid-1;
}
}
//如果没有找到返回-1
return -1;
}
};
