Chapter 5. Efficient Searching – Binary Search and Sorting
What is searching? Searching is trying to locate a given value in a collection of values. For example, you are given an array of integers, and your problem is to check whether the integer 5 is in that array. This is a search problem. In addition to just deciding whether the element 5 is in the array, we may be interested in its location as well when it is found. This is also a search problem.
Another interesting take on it would be to imagine a dictionary, that is, an array of values and associated values. For example, you have an array of names of students and their marks, as shown in the following table:
| 
 Name  | 
 Marks  | 
|---|---|
| 
 Tom  | 
 63  | 
| 
 Harry  | 
 70  | 
| 
 Merry  | 
 65  | 
| 
 Aisha  | 
 85  | 
| 
 Abdullah  | 
 72  | 
| 
 …  | 
 ...  | 
The list continues. Suppose, our system lets the student view his/her own marks. They would type their name and the system would show their marks. For simplicity, let's assume that there are no duplicate names. Now, we have...