Binary Search
Search a sorted array for a target using binary search and return its index (or -1).
Sample input
[1, 3, 5, 7, 9, 11], target = 7
Sample output
3
Solution
def binary_search(arr, target):
lo, hi = 0, len(arr) - 1
while lo <= hi:
mid = (lo + hi) // 2
if arr[mid] == target:
return mid
if arr[mid] < target:
lo = mid + 1
else:
hi = mid - 1
return -1
print(binary_search([1, 3, 5, 7, 9, 11], 7))
function binarySearch(arr, target) {
let lo = 0, hi = arr.length - 1;
while (lo <= hi) {
const mid = Math.floor((lo + hi) / 2);
if (arr[mid] === target) return mid;
if (arr[mid] < target) lo = mid + 1;
else hi = mid - 1;
}
return -1;
}
console.log(binarySearch([1, 3, 5, 7, 9, 11], 7));
public class Main {
static int binarySearch(int[] arr, int target) {
int lo = 0, hi = arr.length - 1;
while (lo <= hi) {
int mid = (lo + hi) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) lo = mid + 1;
else hi = mid - 1;
}
return -1;
}
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9, 11};
System.out.println(binarySearch(arr, 7));
}
}
fun binarySearch(arr: IntArray, target: Int): Int {
var lo = 0
var hi = arr.size - 1
while (lo <= hi) {
val mid = (lo + hi) / 2
if (arr[mid] == target) return mid
if (arr[mid] < target) lo = mid + 1 else hi = mid - 1
}
return -1
}
fun main() {
println(binarySearch(intArrayOf(1, 3, 5, 7, 9, 11), 7))
}
func binarySearch(_ arr: [Int], _ target: Int) -> Int {
var lo = 0, hi = arr.count - 1
while lo <= hi {
let mid = (lo + hi) / 2
if arr[mid] == target {
return mid
} else if arr[mid] < target {
lo = mid + 1
} else {
hi = mid - 1
}
}
return -1
}
print(binarySearch([1, 3, 5, 7, 9, 11], 7))
int binarySearch(List<int> arr, int target) {
int lo = 0, hi = arr.length - 1;
while (lo <= hi) {
int mid = (lo + hi) ~/ 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) {
lo = mid + 1;
} else {
hi = mid - 1;
}
}
return -1;
}
void main() {
print(binarySearch([1, 3, 5, 7, 9, 11], 7));
}
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int lo = 0, hi = n - 1;
while (lo <= hi) {
int mid = (lo + hi) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) lo = mid + 1;
else hi = mid - 1;
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
cout << binarySearch(arr, 6, 7) << endl;
return 0;
}
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int lo = 0, hi = n - 1;
while (lo <= hi) {
int mid = (lo + hi) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) lo = mid + 1;
else hi = mid - 1;
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
printf("%d\n", binarySearch(arr, 6, 7));
return 0;
}