什麼是二分法查找:
二分法也就是折半查找,在有序的數列中尋找指定的元素,設定最小索引(low)和最大索引(height-1)還有中間值mid((low height-1)/2),這種查找,如果中間值比指定元素小讓low=mid 1,如果中間值比指定元素大,讓height =mid-1;
程式碼實作:(免費影片教學分享:java影片教學)
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int arr[] = { 2, 5, 6, 8, 9, 4, 7 }; Arrays.sort(arr); int deix(索引) = getxiabiao(arr, 7); } public static int getxiabiao(int[] arr, int key) { int heigh = arr.length-1; int low = 0; int mid = 0; while (low <= heigh) { mid = low + (heigh - low)/2; if (arr[mid] == key) { return mid; } else if (arr[mid] < key) { low = mid + 1; } else if (arr[mid] > key) { heigh = mid - 1; } } return -1; } }
中間值的設定有兩種方法;
演算法一: mid = (low high) / 2
演算法二: mid = low (high – low)/2
乍看起來,演算法一簡潔,演算法二提取之後,跟算法一沒有什麼差別。但是實際上,差別是存在的。
演算法一的做法,在極端情況下,(low high)存在著溢出的風險,進而得到錯誤的mid結果,導致程式錯誤,而演算法二能夠保證計算出來的mid,一定大於low ,小於high,不存在溢出的問題。
相關文章教學推薦:java入門教學
#以上是java實作二分法查找的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前ByDDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版
好用的JavaScript開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器