/**
* Created by rabbit on 2014-5-12.
*/
public class HalfSerach
{
public static void main(String[] args)
{
int [] arr = {3,6,7,9,11,22,35}; //设置arr数组并进行复制
int index = halfsearch(arr,35); //调用折半查询对数组里的35进行查询
System.out.println("index " + index); //输出查询结果
}
public static int halfsearch(int [] arr,int key) //开始创建折半查询方法
{
int min,max,mid; //创建最小下标min,最大下标max。折半下标mid。
min = 0; //最小下标为
max = arr.length-1; //最大小标为arr.length-1
mid=(min+max)/2; //折半下标为(最大下标和最小下标的和)的一半
while (arr[mid]!=key) //当选定要比较的下标值与折半下标不相同时
{
if (key>arr[mid]) //如果选定下标大于折半下标
min=mid+1; //最小下标移动到折半下标的下一下标处
else if (key<arr[mid]) //如果选定下标小于折半下标
max=mid-1; //最大下标移动到折半下标的上一下标处if (min>max) //如果最小下标比最大小标还大
return -1; //返回-1;
mid=(min+max)/2; //折半查询循环
}
return mid; //当选定要比较的下标值与折半下标相同时,返回折半下标。}