Standard Searching Algorithms (Edexcel GCSE Computer Science)

Revision Note

James Woodhouse

Expertise

Computer Science

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

  • 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

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...

  • Stop!

4

ELSE IF is it bigger than the one you are looking for...

  • Create a new list with the values on the left of the middle value

5

IF it is smaller than the one you are looking for...

  • Create a new list with the values on the right of the middle value

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

5

7

12

15

22

46

2

Compare to the value you are looking for - Is 12 == 7?

3

IF it is the value you are looking for...

  • Stop! - 12 is not equal to 7

4

ELSE IF is it bigger than the one you are looking for... Is 12 > 7? YES

  • Create a new list with the values on the left of the middle value

2

5

7

5

IF it is smaller than the one you are looking for...

  • Create a new list with the values on the right of the middle value

6

REPEAT with the new list

2

5

7


Is 5 == 7? NO

Is 5  > 7? NO - create new list with values to the right

7


Is 7 == 7? YES

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")

 

Ballroom

Country

Electronic

Hip Hop

Jazz

Rock

Techno

2

Compare to the value you are looking for - Is "Hip Hop" == "Rock"?

3

IF it is the value you are looking for...

  • Stop! - "Hip Hop" is not equal to "Rock"

4

ELSE IF is it bigger than the one you are looking for... Is "Hip Hop" > "Rock"? NO

  • Create a new list with the values on the left of the middle value

5

IF it is smaller than the one you are looking for... Is "Hip Hop" < "Rock"? YES

  • Create a new list with the values on the right of the middle value

Jazz

Rock

Techno

6

REPEAT with the new list

Jazz

Rock

Techno


Is "Rock" == "Rock"? YES

STOP!

Exam Tip

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

A binary search in python

# Identify the dataset to search, the target value and set the initial flag
data = [2, 4, 6, 8, 10, 12, 14]
target = 8
found = False

# Set the initial low and high pointers to the beginning and end of the data
low = 0
high = len(data) - 1

# While the low pointer is less than or equal to the high pointer
while 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 message
if found is False:
  print("Target not found")

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 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

Step

Instruction

1

Check the first value

2

IF it is the value you are looking for

  • STOP!

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

Exam Tip

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

  • Fast for large datasets

  • Efficient for repeated searches

  • Dataset must be in order

  • More complex to implement

Linear search

  • Works on unsorted datasets

  • Faster (than binary) on very small datasets

  • Simple to understand and implement

  • Slow for large datasets

  • Inefficient, starts at the beginning each time

A linear search in python

# Identify the dataset to search, the target value and set the initial flag
data = [5, 2, 8, 1, 9]
target = 11
found = False

# Loop through each element in the data
for index in range(0,len(data) - 1):
  
  # 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 message
if found is False:
  print("Target not found")

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

You've read 0 of your 0 free revision notes

Get unlimited access

to absolutely everything:

  • Downloadable PDFs
  • Unlimited Revision Notes
  • Topic Questions
  • Past Papers
  • Model Answers
  • Videos (Maths and Science)

Join the 100,000+ Students that ❤️ Save My Exams

the (exam) results speak for themselves:

Did this page help you?

James Woodhouse

Author: James Woodhouse

James graduated from the University of Sunderland with a degree in ICT and Computing education. He has over 14 years of experience both teaching and leading in Computer Science, specialising in teaching GCSE and A-level. James has held various leadership roles, including Head of Computer Science and coordinator positions for Key Stage 3 and Key Stage 4. James has a keen interest in networking security and technologies aimed at preventing security breaches.