Binary search is an algorithm that finds the position of a target value within a sorted array. It works by recursively dividing the array range in half and searching only within the appropriate half. The time complexity is O(log n) in the average and worst cases and O(1) in the best case, making it very efficient for searching sorted data. However, it requires the list to be sorted for it to work.