Lecture 16: Searching and Sorting (Thursday)
-
Upload
kristine-eris -
Category
Documents
-
view
21 -
download
1
description
Transcript of Lecture 16: Searching and Sorting (Thursday)
1
Lecture 16: Searching and Sorting (Thursday)
Lecturer: Santokh Singh
CompSci 105 SS 2005
Principles of Computer Science
Test Tomorrow.
2
Array Implementation
items: 153
0
front:
0 1 2 3
4 5 6 7
Textbook, pp. 306ff
2back:
3
0
1
2
34
5
6
7
3
5
1
“Circular Array”
items:
0front:
2back:
Java Code, Textbook, pp. 310ff
4
Linked List Implementation
3 5 1
firstNode
Textbook, pp. 302ff,
lastNode
5
Circular Linked List
3 5 1
Java code, textbook, pp. 305ff,
lastNode
6
ADT List Implementation
Java Code, Textbook, pp. 263ff
1. 1
2. 5
3. 3
4.
5.
6.
7
Algorithm Efficiency
Challenges in Measuring Efficiency
Counting Operations
Growth Rates of Functions
Big O Notation
Examples
General Rules
8
Algorithm Efficiency
Challenges in Measuring Efficiency
Counting Operations
Growth Rates of Functions
Big O Notation
Examples
General Rules
9
Node curr = head;
while (curr != null )
{
System.out.println( curr.getItem() );
curr = curr.getNext();
}
Textbook, p. 374
10
Rate of Growth
x + n y
n
time
11
for ( i=1 to n ) {
for ( j=1 to n ) {
for ( k=1 to 5 ) {
Task T
}
}
}
12
Rate of Growth n2 z
n
time
13
Rate of Growth
x + n y
n2 z
n
time
14
Algorithm Efficiency
Challenges in Measuring Efficiency
Counting Operations
Growth Rates of Functions
Big O Notation
Examples
General Rules
15
Big O Notation
“An Algorithm A is order f(n) – denoted O(f(n)) – if constants k and n0 exist such that A requires no more than k * f(n) time units to solve a problem of size n ≥ n0”
- Textbook, p. 376
16
Big O Notation
“An Algorithm A is order f(n) – denoted O(f(n)) – if constants k and n0 exist such that A requires no more than k * f(n) time units to solve a problem of size n ≥ n0”
- Textbook, p. 376
17
Big O Notation
“An Algorithm A is order f(n) – denoted O(f(n)) – if constants k and n0 exist such that A requires no more than k * f(n) time units to solve a problem of size n ≥ n0”
- Textbook, p. 376
Worst Case
18
Big O Notation
“An Algorithm A is order f(n) – denoted O(f(n)) – if constants k and n0 exist such that A requires no more than k * f(n) time units to solve a problem of size n ≥ n0”
- Textbook, p. 376
Worst Case Large Problems
19
Rate of Growth n2 z
n
time
“An Algorithm A is order f(n) – denoted O(f(n)) – if constants k and n0 exist such that A requires no more than k * f(n) time units to solve a problem of size n ≥ n0”
x + n y
Book Computes k and n0 exactly, p. 377
20
Rate of Growth
x + n y
n2 z
n
time
“An Algorithm A is order f(n) – denoted O(f(n)) – if constants k and n0 exist such that A requires no more than k * f(n) time units to solve a problem of size n ≥ n0”
k n
Book Computes k and n0 exactly, p. 377
21
for ( i=1 to n ) {
for ( j=1 to n ) {
for ( k=1 to 5 ) {
Task T
}
}
}
22
for ( i=1 to n ) {
for ( j=1 to i ) {
for ( k=1 to 5 ) {
Task T
}
}
}
Textbook, p. 374-5, 377
23
O Notation Tricks
• Ignore “low-order” terms
• Ignore Constants
• Can combine O()’s
Textbook, p. 380
24
Comparing Growth Rates
O(n)
FasterGrowth
FasterCode
O(n2)
Textbook, p. 378
25
Comparing Growth Rates
O(n)
FasterGrowth
FasterCode
O(n2)
O(1)Textbook, p. 378
26
Comparing Growth Rates
O(n)
FasterGrowth
FasterCode
O(n2)
O(log n)
O(1)
O(2n)
Textbook, p. 378
27
Comparing Growth Rates
O(n)
FasterGrowth
FasterCode
O(n2)
O(n3)
O(n log n)
O(log n)
O(1)
O(2n)
Textbook, p. 378