二分查找的优化和完备

2014-11-24 00:14:36 · 作者: · 浏览: 0

关于二分查找的原理互联网上相关的文章很多,我就不重复了,但网络的文章大部分讲述的二分查找都是其中的核心部分,是不完备的和效率其实还可以提高,如取中间索引使用开始索引加上末尾索引的和除以2,这种做法在数字的长度超过整型的范围的时候就会抛出异常,下面是我的代码,其中可能有些地方没考虑到或有什么不足,希望大家指出,我虚心接受
1
public class Sort {
2
private int binarySort(int[] array, int begin, int end, int value, int call) {
3 // 显示每次调用过程和查找所用的的次数(call)
4 System.out.print(begin + " " + end + " " + call + " ");
5 // 如果每次数组的第一个数或最后一个数等于查找的相等直接返回
6 if (array[begin] == value)
7 return begin;
8 if (array[end] == value)
9 return end;
10 // 如果查询的数字不在数组里面,直接返回-1,从而提高效率
11 if (array[begin] > value)
12 return -1;
13 if (array[end] < value)
14 return -1;
15 // 如果查询数组只有两个数那可以直接通过判断第一个或最后一个是否是查询值
16 if ((end - begin) < 2) {
17 if (array[begin] == value)
18 return begin;
19 if (array