9.二分查找(Binary Search)

題目

前提:二分查找算法所處理的數(shù)組必須是Sorted好的
給定一個(gè)數(shù)組arr和一個(gè)target value,如果target存在于arr中則返回target的index,不存在則返回-1;
arr = {1,3,4,5,6,10}, target = 6;

解題思路

二分查找又稱為折半查找,僅適用于事先已經(jīng)排好序的順序表。其查找的基本思路:首先將給定值K,與表中中間位置元素的關(guān)鍵字比較,若相等,返回該元素的存儲(chǔ)位置;若不等,這所需查找的元素只能在中間數(shù)據(jù)以外的前半部分或后半部分中。然后在縮小的范圍中繼續(xù)進(jìn)行同樣的查找。如此反復(fù)直到找到為止。

Code

public class Solution {
  //O(n) O(1)
  public int binarySearch(int[] arr, int target) {
    if(arr==null||arr.length==0)return -1;
    int left = 0;
    int right = arr.length-1;
    while(left<=right){
      int mid = left+(right-left)/2;
      if(arr[mid]==target){
        return mid;
      }
      if(arr[mid]<target){
        left = mid +1;
      }else{
        right = mid -1;
      }
    }
    return -1;
  }
  
}

時(shí)空復(fù)雜度

time complexity:O(lgn)
space complexity:O(1)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容