public class OrderFind {
private int[] elems = { 5, 9, 34, 45, 65, 98, 145, 265 };
public static void main(String[] args) {
OrderFind a = new OrderFind();
System.out.println(a.contains(145));
}
public int contains(int elem) {
int lowerBound = 0;
int upperBound = elems.length - 1;
int curIn;
// 1、判断是否有元素
if (upperBound < 0) {
return -1;
}
while (true) {
// 2、取中间索引
curIn = (lowerBound + upperBound) / 2;
// 3、判断
// (1)相等直接返回
if (elem == elems[curIn]) {
return curIn;
// (2)判断中间索引与小索引是否相等
} else if (curIn == lowerBound) {// 只有1或2个元素
if (elem != elems[upperBound]) {
return -1;
}
} else {
// (3)修改中间索引
if (elems[curIn] < elem) {
lowerBound = curIn;
} else {
upperBound = curIn;
}
}
}
}
}