编写方法完成对数组int[ ] arr={1,5,18,19,30,45};进行二分查找,找到30。
public class Dichotomy {
/**
* 核心程序:二分法
* 传入数组和目标,返回目标的下标
* 注:使用二分法的前提就是元素的顺序就是从小到大的
* @param a
* @param target
* @return
*/
public int coreCode(int[] a, int target) {
int first = 0;//数组最小的索引
int end = a.length - 1;//数组最大的索引
while (first <= end) {
int mid = (first + end) / 2;//数组居中的索引
if (target < a[mid]) {
end = mid - 1;
} else if (target > a[mid]) {
first = mid + 1;
} else {
return mid;//target == a[mid]的情况下,刚好一下子就找到了目标
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = { 1, 5, 18, 19, 30, 45 };
int i = new Dichotomy().coreCode(arr, 30);
System.out.println(i);
}
}
注:
原创代码,如有雷同,纯属巧合
代码有许多不足,欢迎留言讨论和更正