Computational Cost
If an algorithm executes in O(f(n)) time, this means it takes at worst an amount of resources proportional to f(n), where n is the size of the problem you are solving. The two resources: memory and time. (unit is bit-seconds).
Search a list for an element. Check every element. If the list has n items, you do n checks. O(n) (linear-time) algorithm.
Compute x**n with a simple loop, like so
def simple_power(x, n):
    if n < 0:
        x, n = 1/x, -n
    out = 1
    for k in range(n):
        out *= x
    return out
This is O(n).
In the smallest factor function we created, the shotgun method is O(n).
Using the sqaure-root principle, we chopped this down to O(sqrt(n)).
Bubble sort Begin by walking through the elements and swapping them if they are out of order.
                       p
6,-3, 4, 9, 7, -3, 4, 2
-3, 6, 4, 9, 7, -3, 4, 2
-3, 4, 6, 9, 7, -3, 4, 2
-3, 4, 6, 7, -3, 9, 4, 2
-3, 4, 6, 7, -3, 4, 9, 2
-3, 4, 6, 7, -3, 4, 2, 9
                     p
-3, 4, 6, 7, -3, 4, 2, 9
-3, 4, 6, -3, 7, 4, 2, 9
-3, 4, 6, -3, 4, 7, 2, 9
-3, 4, 6, -3, 4, 2, 7, 9
                  p
-3, 4, -3, 6, 4, 2, 7, 9
-3, 4, -3, 4, 6, 2, 7, 9
-3, 4, -3, 4, 2, 6, 7, 9
               p
-3, 4, -3, 4, 2, 6, 7, 9
-3, -3, 4, 4, 2, 6, 7, 9
-3, -3, 4, 2, 4, 6, 7, 9
            p
-3, -3, 4, 2, 4, 6, 7, 9
-3, -3, 2, 4, 4, 6, 7, 9
         p
-3, -3, 2, 4, 4, 6, 7, 9
      p
-3, -3, 2, 4, 4, 6, 7, 9
  p
list of length n
n - 1
n - 2
n - 3
.
.
.
1
n*(n-1)/2  O(n^2)  "Quadratic sort"
check if items are in order; if so, stop
if not shufffle
Repeat.
Suppose you perform independent experiments each with
probability p of sucess. Mean time to first success:  1/p
Mean time for bozo is n!
Bozo take O(n!) on the averageComputing a GCD with Euclid's Algorithm
Shotgun Approach
Theorem If b, q, a and r are integers and if b = a*q + r, then gcd(a,b) = gcd(a,r).
Let's apply this.