A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fantianfei 中级黑马   /  2015-6-29 13:33  /  346 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

折半查找:提高效率,但是必须保证是有序的数组。

第一种方式:




class Shuzu
{
public static void main(String[] args)
{
        int[] arr={1,3,5,7,9,11};
                int index=halfSearch(arr,3);
                System.out.println("index="+index);
        }

public static int halfSearch(int[] arr,int key)
{
        int min,mid,max;
        min=0;
       
        max=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;
               
                mid=(min+max)/2;
        }
                        return mid;
                       
        }
       
}

*/

/*第二种方式:


class Shuzu
{
public static void main(String[] args)
{
        int[] arr={1,3,5,7,9,11};
                int index=halfSearch_2(arr,11);
                System.out.println("index="+index);
        }

public static int halfSearch_2(int[] arr,int key)
{
        int min=0,max=arr.length-1,mid;
        while(min <=max)
        {
                mid=(min+max)>>1;  //(相当于mid=(min+max)/2;
       
                if(key > arr[mid])
                        min=mid+1;
                else if(key < arr[mid])
                        max=mid-1;
                else
                        return mid;
        }
                        return -1;
                       
        }
       
}

2 个回复

倒序浏览
为什么每一行之间都有空格
回复 使用道具 举报
顶一个!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马