查找算法之-二分查找

查找是针对已排序数进行查找的。
1、二分查找非递归实现
思想:通过while循环不断在新的区间中二分查找

public int binarySearch(int [] arr, int key){
  if(arr == null || arr.length == 0 || key < arr[0] || key > arr[arr.length-1]) {
    return -1;
  }
  int low = 0;
  int high = arr.lenght - 1;
  while(low <= high) {
    int middle = low + (high  -low >>> 1);
    if(key = arr[middle]) {
        return middle;
    }else if(key < arr[middle]) {
        hight = middle - 1;
    }else {
        low = middle + 1;
    }
  }
 return -1;
}

2、二分查找递归实现

   public int binarySearch(int[] arr, int key, int low, int high) {
        if (low < high || arr == null || arr.length == 0 || key < arr[0] || key > arr[arr.length - 1]) {
            return -1;
        }
        int middle = low + (high - low >>> 1);
        if (arr[middle] == key) {
            return middle;
        } else if (arr[middle] > key) {
            return binarySearch(arr, key, low, middle - 1);
        } else if (arr[middle] < key) {
            return binarySearch(arr, key, middle + 1, high);
        }
        return -1;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 13,010评论 0 7
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,426评论 0 13
  • 大学里住的8人间,人很多宿舍很挤,8个人都在不同的专业,属于混合宿舍。开学第一天,大家相互认识,没多久就形成了各自...
    三点水王阅读 3,449评论 3 2
  • 叔叔出生于19世纪20年代初期。 那是个混乱且满目疮痍的时代,军阀混战,国共纠葛。 叔叔的出生,也让原本贫穷的家庭...
    废都小栗子阅读 1,774评论 1 0
  • 小学六年我换了好几个同桌,一年级的是我小时候的玩伴,二年级的,我记得不太确切了,但是三年级,那个,我至今还记...
    簬筱筠阅读 3,021评论 0 0

友情链接更多精彩内容