merge demo merge-and-count demo · merge-and-count demo given two sorted lists a and b, ・count...

27
Lecture slides by Kevin Wayne Copyright © 2005 Pearson-Addison Wesley http://www.cs.princeton.edu/~wayne/kleinberg-tardos Last updated on 3/5/18 2:24 PM 5. D IVIDE AND C ONQUER I merge demo merge-and-count demo

Upload: others

Post on 23-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Lecture slides by Kevin WayneCopyright © 2005 Pearson-Addison Wesley

http://www.cs.princeton.edu/~wayne/kleinberg-tardos

Last updated on 3/5/18 2:24 PM

5. DIVIDE AND CONQUER I

‣ merge demo

‣ merge-and-count demo

Page 2: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

5. DIVIDE AND CONQUER

‣ merge demo

‣ merge-and-count demo

SECTIONS 5.1–5.2

Page 3: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

3

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

Page 4: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

4

compare minimum entry in each list: copy 2

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

sorted list C

Page 5: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

5

compare minimum entry in each list: copy 3

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2

sorted list C

Page 6: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

6

compare minimum entry in each list: copy 7

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3

sorted list C

Page 7: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

7

compare minimum entry in each list: copy 10

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7

sorted list C

Page 8: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

8

compare minimum entry in each list: copy 11

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10

sorted list C

Page 9: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

9

compare minimum entry in each list: copy 14

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11

sorted list C

Page 10: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

10

compare minimum entry in each list: copy 16

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14

sorted list C

Page 11: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

11

compare minimum entry in each list: copy 18

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16

sorted list C

Page 12: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

12

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16 18

sorted list C

list A exhausted: copy 20

Page 13: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

13

list A exhausted: copy 23

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16 18 20

sorted list C

Page 14: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge demo

Given two sorted lists A and B, merge into sorted list C.

14

done

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16 18 20 23

sorted list C

Page 15: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

5. DIVIDE AND CONQUER

‣ merge demo

‣ merge-and-count demo

SECTION 5.3

Page 16: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

16

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

Page 17: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

17

compare minimum entry in each list: copy 2 and add x to inversion count

inversions = 0

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

sorted list C

number of elements remaining in Ax = 5

Page 18: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

18

compare minimum entry in each list: copy 3 and decrement x

x = 5 inversions = 5

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2

sorted list C

5

Page 19: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

19

compare minimum entry in each list: copy 7 and decrement x

x = 4inversions = 5

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3

sorted list C

5

Page 20: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

20

compare minimum entry in each list: copy 10 and decrement x

x = 3inversions = 5

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7

sorted list C

5

Page 21: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

21

compare minimum entry in each list: copy 11 and add x to increment count

x = 2inversions = 5

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10

sorted list C

5

Page 22: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

22

compare minimum entry in each list: copy 14 and decrement x

x = 2inversions = 7

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11

sorted list C

5 2

Page 23: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

23

compare minimum entry in each list: copy 16 and add x to increment count

x = 1inversions = 7

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14

sorted list C

5 2

Page 24: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

24

compare minimum entry in each list: copy 18 and decrement x

x = 1inversions = 8

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16

sorted list C

5 2 1

Page 25: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

25

x = 0inversions = 8

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16 18

sorted list C

5 2 1

list A exhausted: copy 20

Page 26: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

26

list A exhausted: copy 23

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16 18 20

sorted list C

5 2 1 0

x = 0inversions = 8

Page 27: merge demo merge-and-count demo · Merge-and-count demo Given two sorted lists A and B, ・Count number of inversions (a, b) with a ∈ A and b ∈ B. ・Merge A and B into sorted

Merge-and-count demo

Given two sorted lists A and B,

・Count number of inversions (a, b) with a ∈ A and b ∈ B.

・Merge A and B into sorted list C.

27

done: return 8 inversions

2 11 16 20 233 7 10 14 18

sorted list A sorted list B

2 3 7 10 11 14 16 18 20 23

sorted list C

5 2 1 0 0

x = 0inversions = 8