二分查找的Java实现
2010-08-10 14:26
405 查看
/** * 二分查找算法 * @param arr 待查找数组 * @param startIndex 起始下标 * @param endIndex 结束下标 * @param value 目标值 * @return 目标值在数组中的位置,如果为-1,则没有找到 */ private static int bsearch(int[] arr, int startIndex, int endIndex, int value) { // 首先判断几种特殊情况 // 目标值不在起始下标和结束下标的值之间 if (value < arr[startIndex] || arr[endIndex] < value) { return -1; } // 起始下标和结束下标相差1 if (endIndex - startIndex == 1) { int ret = value == arr[startIndex] ? startIndex : -1; return ret == -1 ? (value == arr[endIndex] ? endIndex : ret) : ret; } // 起始下标等于结束下标 if (startIndex == endIndex) { if (value == arr[startIndex]) { return startIndex; } return -1; } int middleIndex = (startIndex + endIndex) / 2; // 判断中间值,如果不等于,向两个相反方向查找 if (value == arr[middleIndex]) { return middleIndex; } else if (arr[middleIndex] < value) { return bsearch(arr, middleIndex, endIndex, value); } else { return bsearch(arr, startIndex, middleIndex, value); } }
相关文章推荐
- java实现 二分查找 非递归与递归2种方式
- 二分查找的java实现
- java语言实现二分查找数据法
- Java实现二分查找
- Java实现二分查找
- Java实现二分查找
- 二分查找 java递归和非递归实现
- 二分查找递归和非递归(java实现)
- java 实现二分查找
- JAVA实现冒泡排序和二分查找
- 算法 -- Java实现二分(折半)查找(图解 + 代码实现)
- 二分查找的实现---java版本
- java递归实现二分查找
- 二分查找之Java实现
- java 实现折半(二分)查找
- Java实现折半查找(二分查找)的递归和非递归算法
- java实现二分查找-两种方式
- 二分查找之Java实现
- 二分查找java实现
- java实现二分查找