二分法查找
二分法也叫折半查找,当数据量很大适宜采用该方法。采用二分法查找时,数据必须是有序且不重复的。 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。
代码实现
package Suanfa;
/**
* Created by hushangjie on 2017/11/9.
*/
public class BinarySearch {
private int[] arr;
public BinarySearch(int[] arr) {
this.arr = arr;
}
public int searchRecursion(int target) {
if (arr != null) {
searchRecursion(target, 0, arr.length);
} else {
return -1;
}
}
public int searchRecursion(int target, int start, int end) {
if (start > end) {
return -1;
}
int mid = (start + end) / 2;
if (arr[mid] == target) {
return mid;
} else if (target > arr[mid]) {
searchRecursion(target, mid + 1, end);
}else {
searchRecursion(target, start, mid -1);
}
}
}
特点
二分法查找要求数列本身有序,如果无序还需排序,当我们从数据库针对某个字段进行排序的时候,需要找出某个值得元素时,就比较适合二分查找了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于