二分查找
前提条件:一组已排好序的元素
public class BinarySearch {
public static void main(String[] args) {
int[] arr = new int[]{7,10, 11, 12, 16, 18, 23, 29, 33, 48, 54, 57, 68, 77, 84, 98};
int index = search(arr, 29);
System.out.println(index);
}
public static int search(int[] arr, int key) {
int index = -1;
int startIndex = 0;
int endIndex = arr.length-1;
int middleIndex = -1;
while(startIndex <= endIndex) {
middleIndex = (startIndex + endIndex)/2;
if(key < arr[middleIndex]) {
endIndex = middleIndex - 1;
}else if(key > arr[middleIndex]) {
startIndex = middleIndex + 1;
}else {
index = middleIndex;
break;
}
}
return index;
}
}