public class MainTest {
static int[] ints=new int[]{1,2,3,4,5};
public static void main(String[] args) {
int i=binarySearch(ints, 4);//查找4,返回所要找的值得下标。前提:已经排好序
System.out.println("下标--"+i);
}
/** 二分法查找
* @param a 数组
* @param num 所要找的值*/
public static int binarySearch(int[] a, int num) {
//length=5或者length=6
if (a.length == 0)
return -1;
int startPos = 0;
int endPos = a.length - 1; //4或者5
int m = (startPos + endPos) / 2; //(4/2)=2或者(5/2)=2
while (startPos <= endPos) {
if (num == a[m])//与中间数比较
return m;
if (num > a[m]) {//大于中间的数
startPos = m + 1;//其实点为中间位置的后一位
}
if (num < a[m]) {//小于中间位
endPos = m - 1;//终点为中间位的前一位
}
m = (startPos + endPos) / 2;//求中间位下标
}
return m;
}
}
二分法查找法
最新推荐文章于 2024-04-03 15:33:19 发布