前言
最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现。
温馨提示:这篇博客可能不适合刚学数据结构的新手。
算法说明
使用二分查找的前提是 该数组是有序的。
代码实现
package sjjg;
public class BinarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
int resIndex = binarysearch(arr, 0, arr.length - 1, 10);
System.out.println("resIndex=" + resIndex);
}
/**
* 功能:二分查找算法
*
* @param arr
* @param left 左边的索引
* @param right 右边的索引
* @param findVal 要查找的值
* @return 如果找到就返回下标,如果没有找到,就返回 -1
*/
public static int binarysearch(int[] arr, int left, int right, int findVal) {
// 当 left > right 时,说明递归整个数组,但是没有找到
if (left > right) {
return -1;
}
int mid = (left + right) / 2;
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;
}
}
}
结束语
欢迎访问我的博客,一起学习,一起进步!