折半查找算法

package test;
/*

  • 折半查找算法
  • 每次取一半的中间数进行比较
  • (前提:原数组已经排好序(升序或降序))
  • 注意事项:当给 lastIndex = midIndex-1;
  •          firstIndex = midIndex+1;
    
  • 赋值的时候 只要后面有加减1的时候(一定要加,不然数组中没这个数的时候,无法跳出循环(死循环))
  • 当找不到这个数的时候 最后一定会有: firstIndex > lastIndex
    */
    public class HalfSearch {
    public static void main(String[] args) {
    //需要查找的数
    int num = 3;
    //被查找的数组
    int[] arr = new int[]{1,3,7,9,11,77,78,79};
    //下标 0 0 0
    int midIndex = 0;
    int firstIndex = 0;
    int lastIndex = arr.length;
    boolean flag = false;
    //折半算法
    while(flag==false&&firstIndex<=lastIndex){
    midIndex = (firstIndex+lastIndex)/2;
    if(num==arr[midIndex]){
    System.out.println("找到了您要找的数!它的下标是:"+midIndex);
    flag = true;
    }
    if(num<arr[midIndex]){
    lastIndex = midIndex-1;
    }
    if(num>arr[midIndex]){
    firstIndex = midIndex+1;
    }
    // System.out.print("mid :"+midIndex);
    // System.out.print("first: "+firstIndex);
    // System.out.print("last: "+lastIndex);
    }
    //用arr[midIndex]判断值是否相等也可以
    if(flag==false){
    System.out.println("sorry,i can’t found it!");
    }
    }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 3,313评论 0 19
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,166评论 0 41
  • 孩子的故事机里经常放一首歌:“爸爸整天嘚啵嘚啵嘚,孩子孩子你要听话,(听话听话孩子你要听话),妈妈整天嘚啵嘚啵...
    天天月月阅读 457评论 0 0
  • 你听过阿波罗和达芙妮的故事吗? 相传爱神丘比特为了向阿波罗复仇,将一支使人陷入爱情漩涡的金箭射向了他,使阿波罗疯狂...
    安棉一阅读 651评论 0 5
  • 都说女儿是爸爸上辈子的情人,我想我爸肯定很花心,因为他有两个情人和一个老婆。 我爸常说他这辈子都贡献给我们仨了。 ...
    胡喜阅读 397评论 2 1