二分查找

递归和非递归实现

public class BinarySearch {

  public static void main(String[] args) {
    int[] arr = {1, 8, 10, 89, 1000, 1234};
    System.out.println(search(arr, 0, arr.length-1, 1000));
  }

  // 递归
  static int search(int[] arr, int left, int right, int searchedValue) {
    int mid = (left+right)/2;
    if(right< left) {
      return -1;
    }
    if(arr[mid] == searchedValue) {
      return mid;
    }
    if(searchedValue > arr[mid]) {
      return search(arr, mid + 1, right, searchedValue);
    } else {
      return search(arr, left,mid - 1, searchedValue);
    }
  }

 // 二分查找非递归实现
  static int binarySearch(int[] arr, int target) {
    int left = 0;
    int right = arr.length - 1;
    while (left <= right){
      int mid = (left + right) / 2;
      if(arr[mid] == target){
        return mid;
      } else if(arr[mid] > target) {
        right = mid -1;
      } else {
        left = mid + 1;
      }
    }
    return -1;
  }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容