二分法查找一个数字在有序增序数组中的位置

问题:给定一个有序增序的数组,给一个值,求这个值在数字中的位置,结果有3中情况:

1.数值不在数组中,返回-1;

2.数值在数组中,且仅存在一次,返回该值的下标。

3.数值在数组中,存在多次,返回该值最右侧下标。

要求:不能用遍历。

解答:用二分法。

比如一个数组为{1,2,2,3}。如果求1的位置,则是0;如果求2的位置,则是2,因为2重复出现2次,第一次下标是1,第二次下标是2,要求最右侧下标。

package getLocation;

public class getLocation {

	public static int getIndex(int[] nums,int length,int target){
		int index=0;
		int low=0;
		int high=length-1;
		int mid=0;
		if(targetnums[length-1])
			return -1;
		while(low<=high)
		{
			mid=(high+low)/2;
			if(nums[mid]>target)
			{
				high=mid-1;
			}
			else if(nums[mid]

 

你可能感兴趣的:(二分法查找一个数字在有序增序数组中的位置)