Java:
/**
* 二分查找:
* 优点:比较次数少,查找速度快
* 缺点:要求待查序列有序
* return 索引位置,查找不到返回-1
*/
public static int binarySearch(int num, int[] arr) {
int start = 0;
int end = arr.length - 1;
int middle = 0;
int count = 0;
while(start <= end){
count ++;
middle = (start + end)/2;
if(num < arr[middle]){
end = middle -1;
}else if (num > arr[middle]){
start = middle + 1;
}else{
return middle;
}
}
System.out.println("查找次数:"+count);
return -1;
}
Scala:
def binarySearch(num: Int, arr: Array[Int]): Int = {
var start = 0
var end = arr.length - 1
while (start <= end) {
val middle = (start + end) / 2
if (num >= arr(middle) && num <= arr(middle)) {
return middle
}
if (num < arr(middle)) {
end = middle - 1
}
if (num > arr(middle)) {
start = middle + 1
}
}
-1
}