input: Write a python function to perform a binary search on a sorted array and return the index of the target value if found, otherwise return -1.
  assert binary_search([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 6) == 5
  assert binary_search([10, 20, 30, 40, 50, 60, 70, 80, 90], 45) == -1
  assert binary_search([3, 8, 15, 25, 33, 47, 51, 67], 67) == 7
output: def binary_search(arr, target):
      left, right = 0, len(arr) - 1
  
      while left <= right:
          mid = (left + right) // 2
  
          if arr[mid] == target:
              return mid
          elif arr[mid] < target:
              left = mid + 1
          else:
              right = mid - 1
  
      return -1