-
*关于二分查找**## 标题
int search(int* nums, int numsLen, int target ) {
int right,mid;
int left=0;
right = numsLen-1;
while(left<right-1){
mid=(left+right)/2;
if(nums[mid]==target){ while(mid!=0&&(nums[mid-1]==nums[mid])){ //判断所确定元素之前是否有相同
mid–;}
return mid;}
else if(nums[mid]<target){left=mid+1;
}
else if(nums[mid]>target){right=mid-1;}
else return -1;
}
上面的代码实现其实是先使右边数nums[right]=target或是使nums[right]变成target右侧最接近它的数,然后再让左边数不断逼近。当逼近到左边界数等于右边界数时达到了临界,此时若target !=边界数则left就会大于right停止查找。这样就可以实现对有序数组的二分查找。