/**
* 二分查找
*/
int[] b = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
@Test
public void testt() {
int startPos = 0;
int lastPos = b.length - 1;
int middlePos = lastPos / 2;
// 要查找的数
int c = -11;
select(startPos, lastPos, middlePos, c);
}
private void select(int startPos, int lastPos, int middlePos, int c) {
if (c == b[middlePos]) {
System.out.println("找到了,位置在:" + middlePos);
} else if (c > b[middlePos]) {
startPos = middlePos;
if (lastPos - startPos <= 0) {
System.out.println("未找到");
} else {
if ((lastPos - startPos) <= 1) {
middlePos = lastPos;
} else {
middlePos = ((lastPos - startPos) / 2) + startPos;
}
select(startPos, lastPos, middlePos, c);
}
} else if (c < b[middlePos]) {
lastPos = middlePos;
if ((lastPos - startPos) <= 0) {
System.out.println("未找到");
} else {
middlePos = ((lastPos - startPos) / 2) + startPos;
select(startPos, lastPos, middlePos, c);
}
}
}