Java 二分查詢
阿新 • • 發佈:2019-01-27
import java.util.*; import java.lang.*; public class BinarySearch { public static int getPos(int[] A, int n, int val) { int mid = 0; int r = n - 1; int l = 0; while (r >= l) { mid = (r + l) / 2; if (val == A[mid]) { if(mid!=0){ if(A[mid - 1] == A[mid]){ return mid - 1; }} return mid; } else if (val < A[mid]) { r = mid; } else { l = mid + 1; } } return -1; } public static void main(String[] args) { Scanner reader = new Scanner(System.in); String x = reader.next(); x = x.replace("[", ""); x = x.replace("]", ""); String xx[] = x.split(","); int tArray[] = new int[xx.length]; for (int i = 0; i < xx.length; i++) { tArray[i] = Integer.parseInt(xx[i]); } int target = tArray[tArray.length - 1]; int n = tArray[tArray.length - 2]; System.out.println(getPos(tArray,n,target)); } }
題目描述
對於一個有序陣列,我們通常採用二分查詢的方式來定位某一元素,請編寫二分查詢的演算法,在陣列中查詢指定元素。
給定一個整數陣列A及它的大小n,同時給定要查詢的元素val,請返回它在陣列中的位置(從0開始),若不存在該元素,返回-1。若該元素出現多次,請返回第一次出現的位置。
測試樣例:[1,3,5,7,9],5,3
返回:1