欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年08月10日 08:38:07   作者:aspook  
這篇文章主要介紹了java算法之二分查找法的實例詳解的相關資料,這里提供簡單實例幫助大家學習理解這部分內(nèi)容,需要的朋友可以參考下

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

原理

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

Java的簡單實現(xiàn)

package me.geed.algorithms; 
 
public class BinarySearch { 
 
  /** 
   * 從一個有序數(shù)組(如升序)中找到值為key元素 
   * @param key 
   * @param array 
   * @return 如果找到目標元素,則返回其在數(shù)組中的索引,否則返回-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 

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

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

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

相關文章

  • java字符串相似度算法

    java字符串相似度算法

    這篇文章主要介紹了java字符串相似度算法,是Java實現(xiàn)比較典型的算法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 解析Spring Cloud Bus消息總線

    解析Spring Cloud Bus消息總線

    這篇文章主要介紹了Spring Cloud Bus消息總線的介紹及使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Springboot自定義banner及驗證過程

    Springboot自定義banner及驗證過程

    這篇文章主要介紹了Springboot自定義banner及驗證過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Spring?JPA?deleteInBatch導致StackOverflow問題

    Spring?JPA?deleteInBatch導致StackOverflow問題

    這篇文章主要介紹了Spring?JPA?deleteInBatch導致StackOverflow問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • springboot后臺session的存儲與取出方式

    springboot后臺session的存儲與取出方式

    這篇文章主要介紹了springboot后臺session的存儲與取出方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 分享Java開發(fā)必須掌握的日志分析命令

    分享Java開發(fā)必須掌握的日志分析命令

    這篇文章主要介紹了分享Java開發(fā)必須掌握的日志分析命令,在日常工作中,如果我們遇到線上問題,一般的處理步驟應該是先保留現(xiàn)場,然后再考慮回滾,之后再是解決問題
    2019-07-07
  • 老生常談java垃圾回收算法(必看篇)

    老生常談java垃圾回收算法(必看篇)

    下面小編就為大家?guī)硪黄仙U刯ava垃圾回收算法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java多線程中Thread.currentThread()和this的區(qū)別詳解

    Java多線程中Thread.currentThread()和this的區(qū)別詳解

    這篇文章主要介紹了Java多線程中Thread.currentThread()和this的區(qū)別詳解,Thread.currentThread()方法返回的是對當前正在執(zhí)行的線程對象的引用,this代表的是當前調(diào)用它所在函數(shù)所屬的對象的引用,需要的朋友可以參考下
    2023-08-08
  • 基于java線程安全問題及原理性分析

    基于java線程安全問題及原理性分析

    下面小編就為大家?guī)硪黄趈ava線程安全問題及原理性分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java常見異常及處理方式總結

    Java常見異常及處理方式總結

    今天給大家?guī)淼氖荍ava的相關知識,文章圍繞著Java異常展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論