给定一个递增排序的数组,查找某个数字是否在数组中,如果在数组中,则返回该数字在数组中第一次出现的位置(从0开始);如果不在数组中,返回-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;
}
}