Standard Searching Algorithms (OCR GCSE Computer Science): Revision Note
Exam code: J277
Binary Search
What is a searching algorithm?
- Searching algorithms are precise step-by-step instructions that a computer can follow to efficiently locate specific data in massive datasets 
- Two common searching algorithms are: - Binary search 
- Linear search 
 
What is a binary search?
- A binary search keeps halving a dataset by comparing the target value with the middle value, going left if smaller, right if bigger, until it finds the value or realises it's not there 
- To perform a binary search the data must be in order! 
- A binary search can be performed on datasets containing numbers or words. 
- Searching for a word instead of a number is the same process, except comparisons are made based on position in the alphabet (alphabetically) instead of numerical size 
How do you perform a binary search?
| Step | Instruction | 
|---|---|
| 1 | Identify the middle value | 
| 2 | Compare to the value you are looking for | 
| 3 | IF it is the value you are looking for... 
 | 
| 4 | ELSE IF is it bigger than the one you are looking for... 
 | 
| 5 | IF it is smaller than the one you are looking for... 
 | 
| 6 | REPEAT with the new list | 
Example 1 - numbers
- Perform a binary search to locate number 7 in the following dataset 
| 2 | 5 | 7 | 12 | 15 | 22 | 46 | 
| Step | Instruction | |||||||
|---|---|---|---|---|---|---|---|---|
| 1 | Identify the middle value (12) | |||||||
| 
 | 
 | |||||||
| 2 | Compare to the value you are looking for - Is 12 == 7? | |||||||
| 3 | IF it is the value you are looking for... 
 | |||||||
| 4 | ELSE IF is it bigger than the one you are looking for... Is 12 > 7? YES 
 
 | |||||||
| 5 | IF it is smaller than the one you are looking for... 
 | |||||||
| 6 | REPEAT with the new list 
 
 Is 5 > 7? NO - create new list with values to the right 
 
 STOP! | 
Example 2 - words
- Perform a binary search to locate the word "Rock" in the following dataset 
| Ballroom | Country | Electronic | Hip Hop | Jazz | Rock | Techno | 
| Step | Instruction | |||||||
|---|---|---|---|---|---|---|---|---|
| 1 | Identify the middle value ("Hip Hop") | |||||||
| 
 | 
 | |||||||
| 2 | Compare to the value you are looking for - Is "Hip Hop" == "Rock"? | |||||||
| 3 | IF it is the value you are looking for... 
 | |||||||
| 4 | ELSE IF is it bigger than the one you are looking for... Is "Hip Hop" > "Rock"? NO 
 | |||||||
| 5 | IF it is smaller than the one you are looking for... Is "Hip Hop" < "Rock"? YES 
 
 | |||||||
| 6 | REPEAT with the new list 
 
 STOP! | 
Examiner Tips and Tricks
If the dataset has an even number of values, the simplest way to identify the middle is to divide the total values by 2 and use that as a middle value i.e. a dataset with 8 values, 4 would be the middle value
Worked Example
Describe the steps a binary search will follow to look for a number in a sorted list [4]
Answer
- Select / choose / pick middle number (or left/right of middle as even number) and … 
- …check if selected number is equal to / matches target number (not just compare) 
- …if searched number is larger, discard left half // if searched number is smaller, discard right half 
- Repeat until number found 
- … or remaining list is of size 1 / 0 (number not found) 
Guidance
- Can get a mark for bullet points 1 & 2 in one step (e.g. check if the middle value is the one we're looking for") 
A binary search in python
# Identify the dataset to search, the target value and set the initial flagdata = [2, 4, 6, 8, 10, 12, 14]target = 8found = False
# Set the initial low and high pointers to the beginning and end of the datalow = 0high = len(data) - 1
# While the low pointer is less than or equal to the high pointerwhile found is False and low <= high:    # Find the middle index  mid = (low + high) // 2
  # Check if the target is at the middle index  if data[mid] == target:        # If the target is found, output a message    found = True    print("Target found")
  # If the target is less than the middle value, search in the left half of the data  elif data[mid] > target:    high = mid - 1
  # Otherwise, search in the right half of the data  else:    low = mid + 1
# If the target is not found, output a messageif found is False:  print("Target not found")
Linear Search
What is a linear search?
- A linear search starts with the first value in a dataset and checks every value one at a time until all values have been checked 
- A linear search can be performed even if the values are not in order 
How do you perform a linear search?
| Step | Instruction | 
|---|---|
| 1 | Check the first value | 
| 2 | IF it is the value you are looking for 
 | 
| 3 | ELSE move to the next value and check | 
| 4 | REPEAT UNTIL you have checked all values and not found the value you are looking for | 
Examiner Tips and Tricks
You will not be asked to perform a linear search on a dataset in the exam, you will be expected to understand how to do it and know the advantages and disadvantages compared to a binary search
What are the advantages and disadvantages of searching algorithms?
| Searching Algorithm | Advantages | Disadvantages | 
|---|---|---|
| Binary search | 
 | 
 | 
| Linear search | 
 | 
 | 
Worked Example
A linear search could be used instead of a binary search.
Describe the steps a linear search would follow when searching for a number that is not in the given list [2]
Answer
- Starting with the first value 
- Checking all values in order 
Guidance
- Must cover idea of checking all value AND being done in order! 
- "Checks each value from the beginning to the end" implies order so would get both bullet point 1 & 2 
A linear search in python
# Identify the dataset to search, the target value and set the initial flagdata = [5, 2, 8, 1, 9]target = 11found = False
# Loop through each element in the datafor index in range(0,len(data)):    # Check if the current element matches the target  if data[index] == target:        # If found, output message    found = True    print("Target found")
#If the target is not found, output a messageif found is False:  print("Target not found")
Unlock more, it's free!
Did this page help you?

