Lecture 2

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 21

CSE 326: Data Structures

Lecture #2
Analysis of Algorithms
Alon Halevy
Fall Quarter 2000
Analysis of Algorithms
• Analysis of an algorithm gives insight into
how long the program runs and how much
memory it uses
– time complexity
– space complexity
• Why useful?
• Input size is indicated by a number n
– sometimes have multiple inputs, e.g. m and n
• Running time is a function of n
n, n2, n log n, 18 + 3n(log n2) + 5n3
Simplifying the Analysis
• Eliminate low order terms
4n + 5  4n
0.5 n log n - 2n + 7  0.5 n log n
2n + n3 + 3n  2n
• Eliminate constant coefficients
4n  n
0.5 n log n  n log n
log n2 = 2 log n  log n
log3 n = (log3 2) log n  log n
Order Notation
• BIG-O T(n) = O(f(n))
– Upper bound
– Exist constants c and n0 such that
T(n)  c f(n) for all n  n0
• OMEGA T(n) =  (f(n))
– Lower bound
– Exist constants c and n0 such that
T(n)  c f(n) for all n  n0
• THETA T(n) = θ (f(n))
– Tight bound
– θ(n) = O(n) =  (n)
Examples
n2 + 100 n = O(n2) = (n2) = (n2)
( n2 + 100 n )  2 n2 for n  10

( n2 + 100 n )  1 n2 for n  0

n log n = O(n2)
n log n = (n log n)
n log n = (n)
More on Order Notation
• Order notation is not symmetric; write
2n2 + 4n = O(n2)
but never
O(n2) = 2n2 + 4n
right hand side is a crudification of the left

Likewise
O(n2) = O(n3)
(n3) = (n2)
A Few Comparisons
Function #1 Function #2

n3 + 2n2 100n2 + 1000

n0.1 log n

n + 100n0.1 2n + 10 log n

5n5 n!

n-152n/100 1000n15

82log n 3n7 + 7n
Race I
n3 + 2n2 vs. 100n2 + 1000
Race II
n0.1 vs. log n
Race III
n + 100n0.1 vs. 2n + 10 log n
Race IV
5n5 vs. n!
Race V
n-152n/100 vs. 1000n15
Race VI
82log(n) vs. 3n7 + 7n
The Losers Win
Function #1 Function #2 Better algorithm!

n3 + 2n2 100n2 + 1000 O(n2)

n0.1 log n O(log n)

n + 100n0.1 2n + 10 log n TIE O(n)

5n5 n! O(n5)

n-152n/100 1000n15 O(n15)

82log n 3n7 + 7n O(n6)


Common Names
constant: O(1)
logarithmic: O(log n)
linear: O(n)
log-linear: O(n log n)
superlinear: O(n1+c) (c is a constant > 0)
quadratic: O(n2)
polynomial: O(nk) (k is a constant)
exponential: O(cn) (c is a constant > 1)
Kinds of Analysis
• Running time may depend on actual data input, not
just length of input
• Distinguish
– worst case
• your worst enemy is choosing input
– best case
– average case
• assumes some probabilistic distribution of inputs
– amortized
• average time over many operations
Analyzing Code
• C++ operations - constant time
• consecutive stmts - sum of times
• conditionals - sum of branches, condition
• loops - sum of iterations
• function calls - cost of function body
• recursive functions- solve recursive equation

Above all, use your head!


Nested Loops
for i = 1 to n do
for j = 1 to n do
sum = sum + 1

n n

 1  n  n
n 2
j 1
i 1 i 1
Nested Dependent Loops
for i = 1 to n do
for j = i to n do
sum = sum + 1

n n n n n


i 1 j 1
1   (n  i  1)   (n  1)   i 
i i 1 i 1

n(n  1) n(n  1)
n(n  1)    n2
2 2
Conditionals
• Conditional
if C then S1 else S2

time  time(C) + Max( time(S1), time(S2) )


Coming Up
• Thursday
– Unix tutorial
– First programming project!
• Friday
– Finishing up analysis
– A little on Stacks and Lists
– Homework #1 goes out

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy