给定一个有序的数组int[] arr={3,6,9,13,25,37,48,55},然后给定一个数key。查找key在数组arr中的位置,返回角标。
看老师写了一遍,看懂了,然后自己写,又写不对,有时候想对了,但是又写不对。躺床上睡了一觉。又会写了。写在博客巩固一下。
while循环语句的结束条件要找准确。还有循环一次完以后,哪些变量会改变,也不能忘记写上。
-------------------------------------------
class ceshi
{
public static void main(String[] args)
{
int[] arr={3,6,9,13,25,37,48,55};
int key=-19;
int index=chazhao(arr,key);
System.out.print(index);
}
public static int chazhao(int[] arr,int key)
{
int min=0;//定义小的角标,初始化为数组的最左端
int max=arr.length-1;//定义大的角标,初始化为数组的最有端
int mid=(max+min)/2;//定义中间的角标
while(key!=arr[mid])
{
if(key>arr[mid])
min=mid+1;
else
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return mid;
}
}