二分查找也叫折半查找,是一种基本的查找算法,这种查找方法需要待查的表满足两个条件
首先,查找表必须使用顺序的存储结构
其次,查找表必须按关键字大小有序排列
算法的基本思想是:
将查找表中间位置数据元素的关键字与给定关键字比较,如果相等则查找成功;
否则利用中间元素将表一分为二,如果中间关键字大于给定关键字,则在前一子表中进行折半查找,否则在后一子表中进行折半查找。重复以上过程直到找到满足条件的元素,则查找成功;
或直到子表为空为止,此时查找不成功。
1 public int firstOccurrence(int [] nums,int target){
2 int low = 0,high = nums.length - 1; 3 while(low <= high){ 4 int mid = low + (high-low)/2; 5 if(nums[mid] == target){ 6 return mid; 7 } 8 if(nums[mid] < target){ 9 low = mid+1; 10 }else { 11 high = mid-1; 12 } 13 } 14 return -1; 15 }