KEMBAR78
Time andspacecomplexity | PPT
Justin Kovacich
What are they, exactly?
Time Complexity – The amount of time required to

execute an algorithm
Space Complexity – The amount of memory required
to execute an algorithm.
Big O Notation
Used to describe the amount of time a given

algorithm would take in the worst case, based on the
input size n.
For the sake of analysis, we ignore constants:
O(C * f(n)) = O(g(n)) or O(5N) = O(N)
Algorithm Analysis Time!
void bubblesort(int []array, int len){
boolean unchanged = false;
while(unchanged == false) {
unchanged = true;
for(int i = 0; i < len -1; i++)
if(a[i] > a[i+1]){
swap (a[i], a[i+1])
unchanged = false;
}
}
}
Sample data, lets follow along!
The following represents a sample input array of size n = 6 to our bubble
sort algorithm. This is a look after each pass of the for loop, where it must
go from 0 to n -1.
6

5

4

3

2

1

Totals:

5

4

3

2

1

6

5 swaps

4

3

2

1

5

6

4 swaps +
1 skip

3

2

1

4

5

6

3 swaps +
2 skips

2

1

3

4

5

6

2 swaps +
3 skips

1

2

3

4

5

6

1 swap + 4
skips

1

2

3

4

5

6

5 skips
Time to add it up…
2 + 4(n-1) + 2 + 4(n-2) + 2(i) + … + 2 + 2(n-1)
N loops through while *(N-1 ) loops through for = N 2 –

N
As size of N grows larger, only the N2 factor is
important.
O(f(n)) = O(N2)
The best case for any sort algorithm is O(N), and
bubblesort can achieve that if its data is already
sorted.
On average, it is one of the worse sorting algorithms.
Other Ways to Measure Time Complexity
The Average Case – More difficult to compute

because it requires some knowledge of what you
should expect on average, but is a best measure of an
algorithm. Bubble sort shares the same worst case
time complexity with insertion sort, but on average is
much worse.
The Best Case – Not exactly the best measure of an
algorithm’s performance because unless it is likely to
continually be the best case comparisons between
algorithms are not very meaningful.
A quick look at Space Complexity
In our previous example, our array consisted of an n

integer array, and 3 other variables.
Space complexity is typically a secondary concern to
time complexity given the amount of space in today’s
computers, unless of course its size requirements
simply become too large.
Why is time complexity important?
Allows for comparisons with other algorithms to

determine which is more efficient.
We need a way to determine whether or not
something is going to take a reasonable amount of
time to run or not…Time complexities of 2n are no
good. For n = 100, would be
1267650600228229401496703205376 operations
(which would take a super long time.)
Time Complexity, the bigger
picture.
One of the big questions in Computer Science right

now is the finding a way to determine if an NPComplete problem can be computed in polynomial
time.
NP-Complete problems are problems that cannot, to
our knowledge, be solved in polynomial time, but
whose answer can be verified in polynomial time.
Homework Assignment!
Without any fore-knowledge of the data you’re going

to be operating on, what is the best case time
complexity for a sorting algorithm and why?
References
Dewdney, A.K. The New Turing Omnibus. New York:

Henry Holt, 1989. 96 – 102
“Computational Complexity Theory”, Wikipedia,
http://en.wikipedia.org/wiki/Computational_complexity_t
. Accessed 1/28/08, last modified 1/15/08.

Time andspacecomplexity

  • 1.
  • 2.
    What are they,exactly? Time Complexity – The amount of time required to execute an algorithm Space Complexity – The amount of memory required to execute an algorithm.
  • 3.
    Big O Notation Usedto describe the amount of time a given algorithm would take in the worst case, based on the input size n. For the sake of analysis, we ignore constants: O(C * f(n)) = O(g(n)) or O(5N) = O(N)
  • 4.
    Algorithm Analysis Time! voidbubblesort(int []array, int len){ boolean unchanged = false; while(unchanged == false) { unchanged = true; for(int i = 0; i < len -1; i++) if(a[i] > a[i+1]){ swap (a[i], a[i+1]) unchanged = false; } } }
  • 5.
    Sample data, letsfollow along! The following represents a sample input array of size n = 6 to our bubble sort algorithm. This is a look after each pass of the for loop, where it must go from 0 to n -1. 6 5 4 3 2 1 Totals: 5 4 3 2 1 6 5 swaps 4 3 2 1 5 6 4 swaps + 1 skip 3 2 1 4 5 6 3 swaps + 2 skips 2 1 3 4 5 6 2 swaps + 3 skips 1 2 3 4 5 6 1 swap + 4 skips 1 2 3 4 5 6 5 skips
  • 6.
    Time to addit up… 2 + 4(n-1) + 2 + 4(n-2) + 2(i) + … + 2 + 2(n-1) N loops through while *(N-1 ) loops through for = N 2 – N As size of N grows larger, only the N2 factor is important. O(f(n)) = O(N2) The best case for any sort algorithm is O(N), and bubblesort can achieve that if its data is already sorted. On average, it is one of the worse sorting algorithms.
  • 7.
    Other Ways toMeasure Time Complexity The Average Case – More difficult to compute because it requires some knowledge of what you should expect on average, but is a best measure of an algorithm. Bubble sort shares the same worst case time complexity with insertion sort, but on average is much worse. The Best Case – Not exactly the best measure of an algorithm’s performance because unless it is likely to continually be the best case comparisons between algorithms are not very meaningful.
  • 8.
    A quick lookat Space Complexity In our previous example, our array consisted of an n integer array, and 3 other variables. Space complexity is typically a secondary concern to time complexity given the amount of space in today’s computers, unless of course its size requirements simply become too large.
  • 9.
    Why is timecomplexity important? Allows for comparisons with other algorithms to determine which is more efficient. We need a way to determine whether or not something is going to take a reasonable amount of time to run or not…Time complexities of 2n are no good. For n = 100, would be 1267650600228229401496703205376 operations (which would take a super long time.)
  • 10.
    Time Complexity, thebigger picture. One of the big questions in Computer Science right now is the finding a way to determine if an NPComplete problem can be computed in polynomial time. NP-Complete problems are problems that cannot, to our knowledge, be solved in polynomial time, but whose answer can be verified in polynomial time.
  • 11.
    Homework Assignment! Without anyfore-knowledge of the data you’re going to be operating on, what is the best case time complexity for a sorting algorithm and why?
  • 12.
    References Dewdney, A.K. TheNew Turing Omnibus. New York: Henry Holt, 1989. 96 – 102 “Computational Complexity Theory”, Wikipedia, http://en.wikipedia.org/wiki/Computational_complexity_t . Accessed 1/28/08, last modified 1/15/08.