package main
import "fmt"
func binarySearch(arr []int, target int) int {
left, right := 0, len(arr)-1
for left <= right {
mid := left + (right-left)/2
if arr[mid] == target {
return mid // found target
} else if arr[mid] < target {
left = mid + 1 // search right half
} else {
right = mid - 1 // search left half
}
}
return -1 // target not found
}
func main() {
arr := []int{1, 3, 5, 7, 9, 11, 13, 15}
target := 9
pos := binarySearch(arr, target)
if pos != -1 {
fmt.Printf("Found %d at index %d\n", target, pos)
} else {
fmt.Printf("%d not found in array\n", target)
}
}
mid := left + (right-left)/2
Calculate middle index to split search space
if arr[mid] == target { return mid }
Check if middle element is the target
else if arr[mid] < target { left = mid + 1 }
If target is bigger, move left pointer to right half
If target is smaller, move right pointer to left half