zoukankan      html  css  js  c++  java
  • 算法-二分查找-1

    普通二分查找

     1 public int binarySearch(int[] arr, int target) {
     2         int l = 0;
     3         int r = arr.length - 1;
     4         int mid = l + ((r - l) >> 1);
     5         while (l <= r) {
     6             if (arr[mid] < target) {
     7                 l = mid + 1;
     8             } else if (arr[mid] > target) {
     9                 r = mid - 1;
    10             } else {
    11                 return mid;
    12             }
    13         }
    14         return -1;
    15     }

    找到第一次出现的目标值下标

     1 public int search(int[] arr, int target) {
     2         int l = 0;
     3         int r = arr.length;
     4         while (l < r) {
     5             int mid = l + ((r - l) >> 1);
     6             if (arr[mid] == target) {
     7                 r = mid;
     8             } else if (arr[mid] < target) {
     9                 l = mid + 1;
    10             } else {
    11                 r = mid;
    12             }
    13         }
    14         if (l == arr.length) {
    15             return -1;
    16         }
    17         return arr[l] == target ? l : -1;
    18     }

    找到最后出现的目标值下标

     1 public int search(int[] arr, int target) {
     2         int l = 0;
     3         int r = arr.length;
     4         while (l < r) {
     5             int mid = l + ((r - l) >> 1);
     6             if (arr[mid] == target) {
     7                 l = mid + 1;
     8             } else if (arr[mid] < target) {
     9                 l = mid + 1;
    10             } else {
    11                 r = mid;
    12             }
    13         }
            // 因为l比目标值后移一位所以判断l==arr.length不能使用 坐标也不可能到0
    14 if (l == 0) { 15 return -1; 16 } 17 return arr[l - 1] == target ? l - 1 : -1; 18 }
  • 相关阅读:
    angular2
    angular1
    JavaScript随笔1
    鼠标样式
    清除浮动
    css-父标签中的子标签默认位置
    [Leetcode] Decode Ways
    [Java] 利用LinkedHashMap来实现LRU Cache
    LinkedHashMap和HashMap的比较使用(转)
    [Java] java.util.Arrays 中使用的 sort 采用的算法 (转)
  • 原文地址:https://www.cnblogs.com/isnotnull/p/15088623.html
Copyright © 2011-2022 走看看