Lecture 16: Searching and Sorting (Thursday)

Preview:

DESCRIPTION

CompSci 105 SS 2005 Principles of Computer Science. Test Tomorrow. Lecture 16: Searching and Sorting (Thursday). Lecturer: Santokh Singh. Array Implementation. 0. 1. 2. 3. 4. 5. 6. 7. items:. 3. 5. 1. front:. 0. back:. 2. Textbook, pp. 306ff. “Circular Array”. 7. 0. 3. - PowerPoint PPT Presentation

Citation preview

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

Recommended