If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Main content

The building blocks of algorithms

An algorithm is a step by step process that describes how to solve a problem in a way that always gives a correct answer. When there are multiple algorithms for a particular problem (and there often are!), the best algorithm is typically the one that solves it the fastest.
As computer programmers, we are constantly using algorithms, whether it's an existing algorithm for a common problem, like sorting an array, or if it's a completely new algorithm unique to our program. By understanding algorithms, we can make better decisions about which existing algorithms to use and learn how to make new algorithms that are correct and efficient.
An algorithm is made up of three basic building blocks: sequencing, selection, and iteration.
Sequencing: An algorithm is a step-by-step process, and the order of those steps are crucial to ensuring the correctness of an algorithm.
Here's an algorithm for translating a word into Pig Latin, like from "pig" to "ig-pay":
1. Append "-".
2. Append first letter
3. Append "ay"
4. Remove first letter
🔍 Try following those steps in different orders and see what comes out. Not the same, is it?
Selection: Algorithms can use selection to determine a different set of steps to execute based on a Boolean expression.
Here's an improved algorithm for Pig Latin that handles words that starts with vowels, so that "eggs" becomes "eggs-yay" instead of the unpronounceable "ggs-eay":
1. Append "-"
2. Store first letter
3. If first letter is vowel:
    a. Append "yay"
4. Otherwise:
    a. Append first letter
    b. Append "ay"
    c. Remove first letter
Iteration: Algorithms often use repetition to execute steps a certain number of times or until a certain condition is met.
We can add iteration to the previous algorithm to translate a complete phrase, so that "peanut butter and jelly" becomes "eanut-pay utter-bay and-yay elly-jay":
1. Store list of words
2. For each word in words:
    a. Append hyphen
    b. If first letter is vowel:
        i. Append "yay"
    c. Otherwise:
        i. Append first letter
        ii. Append "ay"
        iii. Remove first letter
By combining sequencing, selection, and iteration, we've successfully come up with an algorithm for Pig Latin translation.
🤔 Can you think of situations where it produces an incorrect output?

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Do you have any questions about this topic? We'd love to answer—just ask in the questions area below!

Want to join the conversation?