I = 1
P = 1
while (I < N) do
{
  P = P * I
  I = I + 1
}
T(n) = 2 + (N - I) * (1 + 1 + 1)
     = 2 + (N - 1) * (3)
     = O(2 + (3N - 3))
     = O(N)
z = 1.0
t = a
k = n
while K > 0 do
{
  if odd(k) then
    z = z * t
  k = k/2
  if K <> 0 then
    t = t * t
}
O(1) == 3 assignments O(1) == 4 statements k = n, n/2, n/4, n/8, .... stop m iterations
for I = 1 to N - 1 do
  for J = N downto I + 1 do
    if A[J-1] > A[J] then        -- count as 3 assignments
      swap(A[J-1], a[J])
inner loop
O((n - i) * 1) = O(n-i)
outer loop