给定一个递增排序的数组,查找某个数字是否在数组中,如果在数组中,则返回该数字在数组中第一次出现的位置(从0开始);如果不在数组中,返回-1 。
不需要考虑给定的数组不是递增的情况。
务必使用二分查找的方式。
int binarySearch(int* arr, int arrLen, int a) {
// write code here
int left = 0;
int right = arrLen-1;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]==a)
{
if(arr[mid-1]!=a)
return mid;
else
return mid-1;
}
else if(arr[mid]>a)
right = mid - 1;
else
left = mid + 1;
}
return -1;
} import java.util.*;
public class Solution {
/**
*
* @param arr int整型一维数组
* @param a int整型 要查找的数字
* @return int整型
*/
public int binarySearch (int[] arr, int num) {
// write code here
if(arr.length<=0){
return -1;
}
int left =0; // 左脚标
int right =arr.length-1; // 右脚标
// 一直到left== right 时跳出循环
while(left<right){
int mid = (left+right)>>1;
if(arr[mid]<num){
left=mid+1;
}else{
right=mid;
}
}
return arr[left]==num ? left:-1;
}
} import java.util.*;
public class Solution {
/**
*
* @param arr int整型一维数组
* @param a int整型 要查找的数字
* @return int整型
*/
public int binarySearch (int[] arr, int a) {
// write code here
int l = 0, r = arr.length - 1;
while(l < r){
int mid = (l + r) >> 1;
if(arr[mid] >= a) r = mid;
else l = mid + 1;
}
return arr[l] == a ? l : -1;
}
}