- 정렬된 데이터 중 중간 값을 반복적으로 비교하여 원하는 값을 찾는 방법
fun binarySearch(arr: IntArray, target: Int): Int {
var left = 0
var right = arr.size - 1
while (left <= right) {
val mid = left + (right - left) / 2 // 중간 인덱스 계산
when {
arr[mid] == target -> return mid // 타겟 값을 찾은 경우
arr[mid] < target -> left = mid + 1 // 중간 값보다 타겟 값이 큰 경우
else -> right = mid - 1 // 중간 값보다 타겟 값이 작은 경우
}
}
return -1
}
fun main() {
val arr = intArrayOf(1, 3, 5, 7, 9, 11, 13, 15, 17, 19)
val target = 7
val resultIndex = binarySearch(arr, target)
if (resultIndex != -1) {
println("Element $target found at index $resultIndex")
} else {
println("Element $target not found in the array.")
}
}