赞
踩
二分查找属于递归查找的一种,其主要思想是将一个有序数组,分为二分,进行递归,反复为之。
注意:
我们需要一个有序数组,查找的值为3
进行对分,查找
//递归实现 private static int binarySearch(int[]arr, int left, int right, int findVal){ if (left > right){ return -1; } int mid = left + ((right-left) >> 1); //防止溢出 int midVal = arr[mid]; if(findVal > midVal){ return binarySearch(arr, mid+ 1, right, findVal); }else if(findVal < midVal){ return binarySearch(arr, left, mid -1, findVal); }else { return mid; } } //非递归实现 private static int binarySearch2(int[] arr, int findVal){ int left = 0; int right = arr.length - 1; while (left <= right){ int mid = left + ((right-left) >> 1); //防止溢出 if (arr[mid] == findVal){ return mid; }else if(arr[mid] >findVal) { right = mid - 1; }else { left = mid + 1; } } return -1; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。