中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java算法之二分查找法的實例詳解

發布時間:2020-10-17 18:40:32 來源:腳本之家 閱讀:271 作者:aspook 欄目:編程語言

java算法之二分查找法的實例詳解

原理

假定查找范圍為一個有序數組(如升序排列),要從中查找某一元素,如果該元素在此數組中,則返回其索引,否則返回-1。通過數組長度可取出中間位置元素的索引,將其值與目標值比較,如果中間位置元素值大于目標值,則在左部分進行查找,如果中間位置值小于目標值,則在右部分進行查找,如此循環,直到結束。二分查找算法之所以快是因為它沒有遍歷數組的每個元素,而僅僅是查找部分元素就能找到目標或確定其不存在,當然前提是查找范圍為有序數組。

Java的簡單實現

package me.geed.algorithms; 
 
public class BinarySearch { 
 
  /** 
   * 從一個有序數組(如升序)中找到值為key元素 
   * @param key 
   * @param array 
   * @return 如果找到目標元素,則返回其在數組中的索引,否則返回-1 
   */ 
  public static int find(int key, int[] array){ 
    int low = 0; 
    int high = array.length - 1; 
    while (low <= high) { 
      int mid = low + (high - low) / 2; 
      if (array[mid] > key) { 
        high = mid - 1; 
      } else if (array[mid] < key) { 
        low = mid + 1; 
      } else { 
        return mid; 
      }       
    } 
    return -1;    
  } 
   
  public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    int[] array = {2, 3, 5, 9, 10, 13, 23, 45, 78, 89, 100, 128, 256}; 
    System.out.println("目標元素索引值:" + BinarySearch.find(9, array));     
    System.out.println("目標元素索引值:" + BinarySearch.find(26, array)); 
  } 
 
} 

輸出結果為:

目標元素索引值:3 
目標元素索引值:-1 

二分查找算法的時間復雜度

假設范圍數組長度為N,則二分查找的時間復雜度為O(logN)

以上就是java算法中二分查找的實例詳解,如有疑問請留言或到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黔东| 桦南县| 会东县| 西林县| 喀喇沁旗| 浦城县| 余干县| 福建省| 社旗县| 将乐县| 宁河县| 新丰县| 武山县| 阳高县| 墨玉县| 大田县| 和顺县| 平谷区| 攀枝花市| 天长市| 铜川市| 裕民县| 金乡县| 烟台市| 河南省| 伊金霍洛旗| 大丰市| 长葛市| 江津市| 贵南县| 池州市| 栾川县| 团风县| 孟津县| 丰城市| 兴宁市| 双牌县| 阿拉善右旗| 临猗县| 屏东县| 江北区|