給定一個整形有序數組,如何找出某一整數是否在數組中,以及該整數在數組中對應的下標?java
例如:數組
int[] arr = {1,4,6,11,23} int target = 11 找出target在arr中對應位置的下標 結果是:index = 3
這是一個典型的二分查找問題,代碼以下:code
public class Solution_1 { private static int findTargetIndex(int[] nums, int target) { int left = 0; int right = nums.length - 1; while (left <= right) { // int mid = (right+left)/2 可能引發溢出問題 int mid = (right - left) / 2 + left; if (nums[mid] == target) { return mid; } if (nums[mid] > target) { right = mid - 1; } else { left = mid + 1; } } return -1; } public static void main(String[] args) { int[] arr = new int[10000000]; for (int i = 0; i < 10000000; i++) { arr[i] = i; } int target = 111111; int targetIndex = findTargetIndex(arr, target); System.out.println("targetIndex = " + targetIndex); } }