Introduction To Computer Science I Harvard College
Introduction To Computer Science I Harvard College
Harvard College
Week 3
David J. Malan
[email protected]
0
Divide and Conquer
1
Parallel Processing
1) Stand up.
2) Assign yourself the number 1.
3) Find someone else that is standing up.
(If no one is standing, remain standing until I call on you.)
4) Add your number to that person’s number;
the total is your new number.
5) One of you should then sit down.
6) If you’re still standing, go back to step 3.
2
Running Time
T (n)
20
n
18 log n
n/2
16
14
12
T(n)
10
0
0 20 40 60 80 100 120
n
3
Running Time
T (n)
O
Θ
Ω
5
Asymptotic Notation
Formally
T (n) ∈ O (f (n))
We say that the running time, T (n), of an algorithm is
“in big O of f of n” iff there exist an integer n0 > 0 and
a real number c > 0 such that T (n) ≤ c · f (n) for all n ≥ n0.
T (n) ∈ Θ (f (n))
We say that the running time, T (n), of an algorithm is
“in theta of f of n” iff there exist an integer n0 and real numbers
c1, c2 > 0 such that c1 · f (n) ≤ T (n) ≤ c2 · f (n) for all n ≥ n0.
T (n) ∈ Ω (f (n))
We say that the running time, T (n), of an algorithm is
“in omega of f of n” iff there exist an integer n0 and
a real number c > 0 such that T (n) ≥ c · f (n) for all n ≥ n0.
6
O
In English
O(1) “constant”
O(log n) “logarithmic”
O(n) “linear”
O(n log n) “supralinear”
O(n2) “quadratic”
O(nc) “polynomial”
O(cn) “exponential”
O(n!) “factorial”
7
Searching
8
Linear Search
Pseudocode
On input n:
For each element i:
If i == n:
Return true.
Return false.
9
Binary Search
Iterative Pseudocode
10
Sum Looping
Get it?
int
sigma(int m)
{
int i, sum = 0;
11
Sum Recursion
Get it yet?
int
sigma(int m)
{
/* base case */
if (m <= 0)
return 0;
/* recursive case */
else
return (m + sigma(m-1));
}
see
sigma2.c
12
The Stack, Revisited
Frames
13
Binary Search
Recursive Pseudocode
14
Sorting
4 2 6 8 1 3 7 5
15
Bubble Sort
Pseudocode
Repeat n times:
For each element i:
If element i and its neighbor are out of order:
Swap them.
16
Selection Sort
Pseudocode
Let i := 0.
Repeat n times:
Find smallest value, s, between i and list's end, inclusive.
Swap s with value at location i.
Let i := i + 1.
17
Sorting
Visualization
18
Merge Sort
Pseudocode
On input of n elements:
If n < 2, return.
Else
Sort left half of elements.
Sort right half of elements.
Merge sorted halves.
19
Merge Sort
Pseudocode
T (n) = 0, if n < 2
20
Merge Sort
21
Merge Sort
T(16) = 2T(8) + 16
T(8) = 2T(4) +8
T(4) = 2T(2) +4
T(2) = 2T(1) +2
T(1) =0
22
Merge Sort
T (1) =0
T (2) = 2T (1) +2 =0+2 =2
T (4) = 2T (2) +4 =4+4 =8
T (8) = 2T (4) + 8 = 16 + 8 = 24
T (16) = 2T (8) + 16 = 48 + 16 = 64
23
Sorting
Visualization
24
All Sorts of Sorts
Heap Sort
Insertion Sort
Quicksort
Radix Sort
Shell Sort
...
25
Tradeoffs
Space, Time, ...
26
Computer Science 50
Introduction to Computer Science I
Harvard College
Week 3
David J. Malan
[email protected]
27