15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to...
Transcript of 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to...
![Page 1: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/1.jpg)
June 6, 2017
15-112 Fundamentals of Programming
Week 3 - Lecture 2:Intro to efficiency + Big O
![Page 2: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/2.jpg)
Principles of good programming
Correctness
Maintainability
EfficiencyIn terms of running time and memory space used.
Your program does what it is supposed to.Handles all cases (e.g. invalid user input).
Readability, clarity of the code.Reusability for yourself and others(proper use of functions/methods and objects)
programs that are easy to handle and debug.
![Page 3: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/3.jpg)
The Plan
> Searching a given list
> How to properly measure running time
- Linear search
- Binary search
> Big-Oh notation
![Page 4: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/4.jpg)
Motivating example: searching a list
Given a list of integers, and an integer, determine if the integer is in the list.
3 1 9 4 0 8 7 6 2 5
6
How many steps in the algorithm?
![Page 5: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/5.jpg)
Motivating example: searching a list
31 9 4 0 8 76 2 5
6
How many steps in the algorithm?
Given a list of integers, and an integer, determine if the integer is in the list.
![Page 6: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/6.jpg)
Motivating example: searching a list
1 6
6
How many steps in the algorithm?
Given a list of integers, and an integer, determine if the integer is in the list.
![Page 7: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/7.jpg)
Motivating example: searching a list
1 6
6
How many steps in the algorithm?
running time of an algorithm depends on:- size of input (e.g., size of the list)- the values in the input
Given a list of integers, and an integer, determine if the integer is in the list.
![Page 8: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/8.jpg)
Measuring running time
running time of an algorithm depends on:- size of input (e.g., size of the list)- the values in the input
![Page 9: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/9.jpg)
Measuring running time
running time of an algorithm depends on:- size of input (e.g., size of the list)- the values in the input
size of the list:
Want to know running time with respect to any list size.
N = list size
Measure running time as a function of N.
![Page 10: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/10.jpg)
Measuring running time
running time of an algorithm depends on:- size of the list (size of input)- the values in the input
the values in the input:
Measure running time with respect to worst input.
worst input = input that leads to most number of steps
![Page 11: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/11.jpg)
Measuring running time
- for strings: = number of charactersN- for lists: = number of elementsN
- for ints: = number of digitsN
> Running time is a function of .N
> Look at worst-case scenario/input of length . N
> Count algorithmic steps.
> Ignore constant factors. (e.g. ) N2 ⇡ 3N2
How to properly measure running time
(use Big-Oh notation)
> Input length/size denoted by (and sometimes by )N n
![Page 12: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/12.jpg)
The Plan
> Searching a given list
> How to properly measure running time
- Linear search
- Binary search
> Big-Oh notation
![Page 13: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/13.jpg)
Searching for an element in a list
N steps
Can’t do better (in the worst case)
How many steps does this take?
This algorithm is called Linear Search.
Given a list of integers, and an integer, determine if the integer is in the list.
![Page 14: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/14.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
running time: N steps
Can we do better?
99
How would you search for a name in a phonebook?
6050
Given a sorted list of integers, and an integer, determine if the integer is in the list.
![Page 15: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/15.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
Start in the middle
996050
![Page 16: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/16.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
Start in the middle
99
If (element > middle), can ignore left half of the list.If (element < middle), can ignore right half of the list.Repeat process on the remaining half.
6050
![Page 17: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/17.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
996050
Start in the middleIf (element > middle), can ignore left half of the list.If (element < middle), can ignore right half of the list.Repeat process on the remaining half.
![Page 18: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/18.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
6050 99
Start in the middleIf (element > middle), can ignore left half of the list.If (element < middle), can ignore right half of the list.Repeat process on the remaining half.
![Page 19: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/19.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
6050 99
Start in the middleIf (element > middle), can ignore left half of the list.If (element < middle), can ignore right half of the list.Repeat process on the remaining half.
![Page 20: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/20.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
6050 99
Start in the middleIf (element > middle), can ignore left half of the list.If (element < middle), can ignore right half of the list.Repeat process on the remaining half.
![Page 21: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/21.jpg)
Searching for an element in a sorted list
81 2 4 5 5 60 9 9
50
Binary Search
How many steps does this take (in the worst case)?
6050 99
When is this 1?
⇠ log2 N
At each step we halve the list.
N ! N
2! N
4! N
8! · · · ! 1
After k steps: elements left.N
2k
![Page 22: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/22.jpg)
N vs log N
How much better is log N compared to N ?
N log N2 18 3
128 71024 10
1,048,576 201,073,741,824 30
1,152,921,504,606,846,976 60
~ 1 quintillion
![Page 23: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/23.jpg)
n vs log n
![Page 24: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/24.jpg)
Linear search vs Binary search
Linear SearchTakes steps.
Works for both sorted and unsorted lists.
⇠ N
Binary SearchTakes steps.
Works for only sorted lists.
⇠ log2 N
![Page 25: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/25.jpg)
Linear search code
def linearSearch(L, target): for index in range(len(L)): if(L[index] == target): return True return False
How many steps in the worst case?
![Page 26: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/26.jpg)
Binary search code
def binarySearch(L, target): start = 0 end = len(L) - 1 while(start <= end): middle = (start + end)//2 if(L[middle] == target): return True elif(L[middle] > target): end = middle-1 else: start = middle+1 return False
How many steps in the worst case?
![Page 27: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/27.jpg)
The Plan
> Searching a given list
> How to properly measure running time
- Linear search
- Binary search
> Big-Oh notation
![Page 28: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/28.jpg)
O(·)
The CS way to compare functions:
means , ignoring constant factors and small values of n
f(n) g(n)
⌘f(n) = O(g(n)) f(n) is O(g(n))
![Page 29: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/29.jpg)
O(·)
The CS way to compare functions:
means , ignoring constant factors and small values of n
10n+ 25 = O(n) 10n+ 25 is O(n)⌘
10n+ 25 n
![Page 30: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/30.jpg)
Big Oh Notation
A notation to ignore constant factors and small n.
2n is O(n)
3n is O(n)
1000n is O(n)
0.0000001n is O(n)
2 log2 n is O(log n)
3 log2 n is O(log n)
1000 log2 n is O(log n)
0.0000001 log2 n is O(log n)
log9 n is O(log n)
Running time of linear search is O(N)
Running time of binary search is O(logN)
0.0000001n2is not O(n)
n is O(n2)
n log7 n+ 100 is not O(n)
![Page 31: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/31.jpg)
Big Oh Notation
Why ignore constant factors and small n?
- We want to capture the essence of an algorithm/problem.
- Difference in Big Oh
a really fundamental difference.
![Page 32: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/32.jpg)
Big Oh Notation
Ignoring constant factors meansignoring lower order additive terms.
n2 + 100n+ 500 is O(n2)
n2 + 100n+ 500
n2= 1 +
100n
n2+
500
n2
Lower order terms don’t matter!
�! 1
Also:
![Page 33: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/33.jpg)
Big Oh Notation
![Page 34: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/34.jpg)
Big Oh Notation
![Page 35: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/35.jpg)
Important Big Oh Classes
Again, not much interested in the differencebetween and .n n/2
We are very interested in the differences between
log n <<<pn << n << n2 << n3 <<< 2
n
![Page 36: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/36.jpg)
Important Big Oh Classes
Common function families:
Constant: O(1)
Logarithmic: O(log n)
Square-root: O(pn) = O(n0.5)
Linear: O(n)
Loglinear: O(n log n)
Quadratic: O(n2)
Exponential: O(kn)
![Page 37: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/37.jpg)
Important Big Oh Classes
![Page 38: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/38.jpg)
Exponential running time
If your algorithm has exponential running timee.g. ⇠ 2n
No hope of being practical.
![Page 39: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/39.jpg)
n vs 2n
2n n2 18 3
128 71024 10
1,048,576 201,073,741,824 30
1,152,921,504,606,846,976 60
![Page 40: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/40.jpg)
Exponential running time example
Given a list of integers, determine if there is a subset of the integers that sum to 0.
-3 -2 7 99 5 14
![Page 41: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/41.jpg)
Exponential running time example
Given a list of integers, determine if there is a subset of the integers that sum to 0.
Exhaustive SearchTry every possible subset and see if it sums to 0.
Number of subsets is 2N
So running time is at least 2N
Given an array of size 150,
-3 -2 7 99 5 14
![Page 42: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/42.jpg)
Review: Measuring running time
- for strings: = number of charactersN- for lists: = number of elementsN
- for ints: = number of digitsN
> Running time is a function of .N
> Look at worst-case scenario/input of length . N
> Count algorithmic steps.
> Ignore constant factors. (e.g. ) N2 ⇡ 3N2
How to properly measure running time
(use big Oh notation)
> Input length/size denoted by (and sometimes by )N n
![Page 43: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/43.jpg)
Review
Number of times you need to divide N by 2 to reach 1.
What is the big Oh notation used for?
Describe the performance or complexity of an algorithm by ignoring:
- constant factors- small N.
ignore small order additive terms.
Give 2 definitions of log2 N
The number k that satisfies . 2k = N
![Page 44: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/44.jpg)
Review
Big-Oh is the right level of abstraction!
“Sweet spot”
- coarse enough to suppress details like programming language, compiler, architecture,…
- sharp enough to make comparisons between different algorithmic approaches.
is analogous to “too many significant figures”.8N2 � 3n+ 84
O(N2)
![Page 45: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/45.jpg)
Review
1010n3 is O(n3)?
n10000 is O(1.1n)?
n is O(n2)?
n3 is O(2n)?
100n log2 n is O(n)?
1000 log2 n is O(
pn)?
1000 log2 n is O(n0.00000001)?
Yes
Yes
Yes
Yes
No
Yes
Yes
Does the base of the log matter?
When we ask “what is the running time…”you must give the tight bound!
logb n =
logc n
logc bconstant
![Page 46: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/46.jpg)
Review
Constant: O(1)
Logarithmic: O(log n)
Square-root: O(pn) = O(n0.5)
Linear: O(n)
Loglinear: O(n log n)
Quadratic: O(n2)
Exponential: O(kn)
Polynomial: O(nk)
![Page 47: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/47.jpg)
Review
log n <<<pn << n < n log n << n2 << n3 <<< 2
n <<< 3
n
![Page 48: 15-112 Fundamentals of Programming · Fundamentals of Programming Week 3 - Lecture 2: Intro to efficiency + Big O. Principles of good programming Correctness Maintainability Efficiency](https://reader034.fdocuments.us/reader034/viewer/2022051606/60295a006dba336f717fb18d/html5/thumbnails/48.jpg)
Review
You have an algorithm with running time . O(N)
If we double the input size, by what factor does the running time increase?
If we quadruple the input size, by what factor does the running time increase?
If we double the input size, by what factor does the running time increase?
If we quadruple the input size, by what factor does the running time increase?
You have an algorithm with running time . O(N2)