introduction: analysis of algorithms, insertion sort ...sourav/lecture-01.pdf · l1.2 analysis of...

50
Introduction: Analysis of Algorithms, Insertion Sort, Merge Sort Lecture 1

Upload: doannhi

Post on 29-Jun-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

Introduction: Analysis of Algorithms, Insertion Sort, Merge Sort

Lecture 1

Page 2: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.2

Analysis of algorithms

The theoretical study of computer-program

performance and resource usage.

What’s more important than performance?

• modularity

• correctness

• maintainability

• functionality

• robustness

• user-friendliness

• programmer time

• simplicity

• extensibility

• reliability

Page 3: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.3

Why study algorithms and

performance?

• Algorithms help us to understand scalability.

• Performance often draws the line between whatis feasible and what is impossible.

• Algorithmic mathematics provides a languagefor talking about program behavior.

• The lessons of program performance generalizeto other computing resources.

• Speed is fun!

Page 4: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.4

The problem of sorting

Input: sequence a1, a2, …, an of numbers.

Example:

Input: 8 2 4 9 3 6

Output: 2 3 4 6 8 9

Output: permutation a'1, a'2, …, a'n such

that a'1 a'2 … a'n .

Page 5: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.5

Insertion Sort

INSERTION-SORT (A, n) ⊳ A[1 . . n]

for j ← 1 to n

do key ← A[ j]

i ← j – 1

while i > 0 and A[i] > key

do A[i+1] ← A[i]

i ← i – 1

A[i+1] = key

“pseudocode”

i j

key sorted

Page 6: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.6

Example of Insertion Sort

8 2 4 9 3 6

Page 7: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.7

Example of Insertion Sort

8 2 4 9 3 6

Page 8: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.8

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

Page 9: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.9

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

Page 10: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.10

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

Page 11: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.11

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

Page 12: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.12

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

2 4 8 9 3 6

Page 13: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.13

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

2 4 8 9 3 6

Page 14: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.14

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

2 4 8 9 3 6

2 3 4 8 9 6

Page 15: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.15

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

2 4 8 9 3 6

2 3 4 8 9 6

Page 16: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.16

Example of Insertion Sort

8 2 4 9 3 6

2 8 4 9 3 6

2 4 8 9 3 6

2 4 8 9 3 6

2 3 4 8 9 6

2 3 4 6 8 9 done

Page 17: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.17

Running time

• The running time depends on the input: analready sorted sequence is easier to sort.

• Parameterize the running time by the size ofthe input, since short sequences are easier tosort than long ones.

• Generally, we seek upper bounds on therunning time, because everybody likes aguarantee.

Page 18: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.18

Kinds of analyses

Worst-case: (usually)

• T(n) = maximum time of algorithmon any input of size n.

Average-case: (sometimes)

• T(n) = expected time of algorithmon any input of size n.

Best-case: (bogus)

• Cheat with a slow algorithm thatworks fast on some input.

Page 19: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.19

Machine-independent time

What is insertion sort’s worst-case time?

• It depends on the speed of our computer:

• relative speed (on the same machine),

• absolute speed (on different machines).

BIG IDEA:

• Ignore machine-dependent constants.

• Look at growth of T(n) as n → ∞ .

“Asymptotic Analysis”

Page 20: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.20

Q-notation

• Drop low-order terms; ignore leading constants.

• Example: 3n3 + 90n2 – 5n + 6046 = Q(n3)

Math: Q(g(n)) = { f (n) : there exist positive constants c1, c2, and

n0 such that 0 c1 g(n) f (n) c2 g(n)

for all n n0 }

Engineering:

Page 21: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.21

Asymptotic performance

n

T(n)

n0

• We shouldn’t ignoreasymptotically sloweralgorithms, however.

• Real-world designsituations often call for acareful balancing ofengineering objectives.

• Asymptotic analysis is auseful tool to help tostructure our thinking.

When n gets large enough, a Q(n2) algorithm

always beats a Q(n3) algorithm.

Page 22: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.22

Insertion sort analysis

Worst case: Input reverse sorted.

QQn

j

njnT2

2)()(

Average case: All permutations equally likely.

QQn

j

njnT2

2)2/()(

Is insertion sort a fast sorting algorithm?

• Moderately so, for small n.

• Not at all, for large n.

[arithmetic series]

Page 23: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.23

Merge sort

MERGE-SORT A[1 . . n]

To sort n numbers:

1. If n = 1, done.

2. Recursively sort A[ 1 . . n/2 ] andA[ n/2+1 . . n ] .

3. “Merge” the 2 sorted lists.

Key subroutine: MERGE

Page 24: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.24

Merging two sorted arrays

20

13

7

2

12

11

9

1

Page 25: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.25

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

Page 26: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.26

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

Page 27: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.27

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

Page 28: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.28

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

Page 29: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.29

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

Page 30: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.30

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

Page 31: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.31

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

9

Page 32: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.32

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

9

20

13

12

11

Page 33: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.33

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

9

20

13

12

11

11

Page 34: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.34

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

9

20

13

12

11

11

20

13

12

Page 35: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.35

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

9

20

13

12

11

11

20

13

12

12

Page 36: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.36

Merging two sorted arrays

20

13

7

2

12

11

9

1

1

20

13

7

2

12

11

9

2

20

13

7

12

11

9

7

20

13

12

11

9

9

20

13

12

11

11

20

13

12

12

Time = Q(n) to merge a total

of n elements (linear time).

Page 37: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.37

Analyzing merge sort

MERGE-SORT (A, n) ⊳ A[1 . . n]

To sort n numbers:

1. If n = 1, done.

2. Recursively sort A[ 1 . . n/2 ]and A[ n/2+1 . . n ] .

3. “Merge” the 2 sorted lists

T(n)

Q(1)

2T(n/2)

Q(n) Abuse

Sloppiness: Should be T( n/2 ) + T( n/2 ) ,

but it turns out not to matter asymptotically.

Page 38: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.38

Recurrence for merge sort

T(n) = Q(1) if n = 1;

2T(n/2) + Q(n) if n > 1.

• We shall usually omit stating the basecase when T(n) = Q(1) for sufficientlysmall n (and when it has no effect on thesolution to the recurrence.

• Lecture 2 provide several ways to find agood upper bound on T(n).

Page 39: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.39

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

Page 40: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.40

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

T(n)

Page 41: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.41

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

T(n/2) T(n/2)

cn

Page 42: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.42

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

T(n/4) T(n/4) T(n/4) T(n/4)

cn/2 cn/2

Page 43: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.43

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

Page 44: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.44

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

h = lg n

Page 45: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.45

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

h = lg n

cn

Page 46: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.46

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

h = lg n

cn

cn

Page 47: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.47

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

h = lg n

cn

cn

cn

Page 48: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.48

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

h = lg n

cn

cn

cn

#leaves = n Q(n)

Page 49: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.49

Recursion tree

Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.

cn

cn/4 cn/4 cn/4 cn/4

cn/2 cn/2

Q(1)

h = lg n

cn

cn

cn

#leaves = n Q(n)

TotalQ(n lg n)

Page 50: Introduction: Analysis of Algorithms, Insertion Sort ...sourav/Lecture-01.pdf · L1.2 Analysis of algorithms The theoretical study of computer-program performance and resource usage

L1.50

Conclusions

• Q(n lg n) grows more slowly than Q(n2).

• Therefore, merge sort asymptoticallybeats insertion sort in the worst case.

• In practice, merge sort beats insertionsort for n > 30 or so.

• Go test it out for yourself!