您好,登錄后才能下訂單哦!
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算法中二分查找的實例詳解,如有疑問請留言或到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。