Java
while
public class A {
public static int binarySearch(int[] array, int aim) {
int low = 0, high = array.length - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (aim < array[mid]) {
high = mid - 1;
} else if (aim > array[mid]) {
low = mid + 1;
} else {
return mid;
}
}
return -(low + 1);
}
public static void main(String[] args) {
int[] array={1,3,5,8};
System.out.println(binarySearch(array,9));
}
}
recursion
public class A {
public static int binarySearch(int[] array, int low, int high, int aim) {
if (low > high) {
return -(low + 1);
}
int mid = (low + high) / 2;
if (aim < array[mid]) {
return binarySearch(array, low, mid - 1, aim);
} else if (aim > array[mid]) {
return binarySearch(array, mid + 1, high, aim);
} else {
return mid;
}
}
public static void main(String[] args) {
int[] array = {1, 3, 5, 8};
System.out.println(binarySearch(array, 0, array.length - 1, 9));
}
}
Go
while
package main
func main() {
var array = []int{1, 3, 5, 8}
println(binarySearch(array, 9))
}
func binarySearch(array []int, aim int) int {
var (
low = 0
high = len(array) - 1
mid int
)
for low <= high {
mid = (low + high) / 2
if aim < array[mid] {
high = mid - 1
} else if aim > array[mid] {
low = mid + 1
} else {
return mid
}
}
return -(low + 1)
}
recursion
package main
func main() {
var array = []int{1, 3, 5, 8}
println(binarySearch(array, 0, len(array)-1, -1))
}
func binarySearch(array []int, low, high, aim int) int {
if low > high {
return -(low + 1)
}
mid := (low + high) / 2
if aim < array[mid] {
return binarySearch(array, low, mid-1, aim)
} else if aim > array[mid] {
return binarySearch(array, mid+1, high, aim)
} else {
return mid
}
}