美文网首页算法
读《算法 第四版》算法2--二分查找的递归实现

读《算法 第四版》算法2--二分查找的递归实现

作者: KUN叔 | 来源:发表于2017-02-15 16:07 被阅读31次

二分查找的递归实现

-自然语言描述:
在计算机科学中,二分搜索(英语:binary search,也称折半搜索(英语:half-interval search),是一种在有序数组中查找某一特定元素的搜索算法,搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
-Java语言描述:
1 版本1:

public static int rank(int key, int[] a){
    return rank(key, a, 0, a.length-1);
}
public static int rank(int key, int [] a, int start, int end){
    //如果key存在于a[]中,它的索引不会小于start且不会大于end
    if(start > end) return -1;
    int mid = start + (end  - start)/2;
    if(key < a[mid]) return rank(key, a, start, mid -1);
    else if(key > a[mid]) return rank (key, a, mid + 1, end);
    esle return mid;
}

2 版本2:

  public int rank(int key,int[] a){
    int start = 0; int end = a.length -1;
    while(start <= end){
        int mid = start + (end - start)/2
        if (key < a[mid]) end = mid -1;
        else if (key > a[mid]) start = mid +1;
        else return mid;
    }
    return start;
  }

相关文章

  • 二分查找

    1.非顺序表查找最大值递归算法 2.顺序表的二分查找算法查找下标最小的特定元素x 递归实现 非递归实现

  • JavaScript实现二分查找

    最近撸《算法》第四版,开篇就是一个Java版本的二分查找算法,下面以JS实现一下。 二分查找的前提为:数组、有序。...

  • 二叉树的插入和搜索--python实现

    本文首先介绍了二分查找法,采用“循环”和“递归”2种方法实现。采用递归算法实现了二叉树的插入和搜索算法。 一、二分...

  • 读《算法 第四版》算法2--二分查找的递归实现

    二分查找的递归实现 -自然语言描述:在计算机科学中,二分搜索(英语:binary search,也称折半搜索(英语...

  • 二分查找

    二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可...

  • java实现二分查找-两种方式

    二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可...

  • 算法2:递归算法与二分查找

    3.递归算法3.1斐波那契数列(递归)3.2汉诺塔3.3八皇后问题4.⼆分查找递归实现 4.1二分递归查找: 3....

  • 剑指offer学习笔记:2.4 算法和数据操作

    2.4 算法和数据操作 重点关注二分查找,归并排序和快速排序。很多算法都有递归和循环两种不同实现方法。通常基于递归...

  • 刷题笔记

    算法思想 一、二分查找 1. 算法思想 算法详解 算法细节 一定要看二分查找细节.md 实现时需要注意以下细节: ...

  • 算法-二分搜索算法

    算法:二分搜索算法(折半查找算法)时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算...

网友评论

    本文标题:读《算法 第四版》算法2--二分查找的递归实现

    本文链接:https://www.haomeiwen.com/subject/bmxqwttx.html