Binary Search

by arunoda

JavaScript

function binarySearch(haystack, needle) {
  let start = 0
  let end = haystack.length -1
  let iterations = 0
  
  while(start <= end) {
    iterations ++
    const mid = Math.floor((start + end)/2)
    const item = haystack[mid]
    if (needle === item) return [mid, iterations]
    
    if (needle > item) {
      start = mid + 1
    } else {
      end = mid - 1
    }
  }
  
  return [-1, iterations]
}


const data = [1, 2, 3, 5, 6, 7, 8, 9, 10]
console.log(binarySearch(data, 100))