java之折半查询

 

/**
* 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;                                         //当选定要比较的下标值与折半下标相同时,返回折半下标。

}

posted @ 2014-05-13 09:56  liupengcheng  阅读(318)  评论(0编辑  收藏  举报