cs221: algorithms and data structures lecture #3.5 sorting takes priority steve wolfman 2011w2 1

24
CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

Upload: tre-bewley

Post on 01-Apr-2015

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

CS221: Algorithms and Data Structures

Lecture #3.5Sorting Takes Priority

Steve Wolfman

2011W2

1

Page 2: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

Today’s Outline

• Sorting with Priority Queues, Three Ways

2

Page 3: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

Quick Review of Sorts

• Insertion Sort: Keep a list of already sorted elements. One by one, insert new elements into the right place in the sorted list.

• Selection Sort: Repeatedly find the smallest (or largest) element and put it in the next slot.

• Merge Sort: Divide the list in half, sort the halves, merge them back together. (Base case: length 1.)

3

Page 4: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

How Do We Sort with a Priority Queue?

You have a bunch of data.

You want to sort by priority.

You have a priority queue.

WHAT DO YOU DO?

4

F(7) E(5) D(100) A(4)

B(6)

insert deleteMinG(9) C(3)

Page 5: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort”

Sort(elts):

pq = new PQ

for each elt in elts:

pq.insert(elt);

sortedElts = new array of size elts.length

for i = 0 to elts.length – 1:

sortedElts[i] = pq.deleteMin

return sortedElts

5

What sorting algorithm is this?a.Insertion Sortb.Selection Sortc.Heap Sortd.Merge Sorte.None of these

Page 6: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

Reminder:Naïve Priority Q Data Structures

• Unsorted list:– insert: worst case O(1)

– deleteMin: worst case O(n)

• Sorted list:– insert: worst case O(n)

– deleteMin: worst case O(1)

6

Page 7: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Unsorted List MAX-PQ

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

How long does inserting all of these elements take?

And then the deletions…

Page 8: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Unsorted List MAX-PQ

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

PQ

Page 9: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Unsorted List MAX-PQ

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

9 4 8 1 6 10 12 13 2 3 14 7 205

PQ

PQ

Result

Page 10: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Unsorted List MAX-PQ

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

9 4 8 1 6 10 12 13 2 3 14 7 205

PQ

PQ

Result

9 4 8 1 6 10 12 13 2 3 7 14 205

PQ Result

Page 11: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Unsorted List MAX-PQ

11

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

9 4 8 1 6 10 12 13 2 3 14 7 205

PQ

PQ

Result

9 4 8 1 6 10 12 13 2 3 7 14 205

PQ Result

9 4 8 1 6 10 12 7 2 3 13 14 205

PQ Result

Page 12: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

Two PQSort Tricks

1) Use the array to store both your results and your PQ. No extra memory needed!

2) Use a max-heap to sort in increasing order (or a min-heap to sort in decreasing order) so your heap doesn’t “move” during deletions.

12

Page 13: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Unsorted List MAX-PQ

How long does “build” take? No time at all!

How long do the deletions take? Worst case: O(n2) What algorithm is this?

a. Insertion Sort

b. Selection Sort

c. Heap Sort

d. Merge Sort

e. None of these

13

9 4 8 1 6 10 12 7 2 3 13 14 205

PQ Result

Page 14: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” insertions with Sorted List MAX-PQ

14

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

PQ

9 4 8 1 6 10 12 13 2 3 14 7 205

PQ

9 4 8 1 6 10 12 13 2 3 7 14 205

PQ

9 4 8 1 6 10 12 13 2 3 7 14 205

PQ

Page 15: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” insertions with Sorted List MAX-PQ

15

9 4 8 1 6 10 12 13 2 3 7 14 205

PQ

How long does “build” take? Worst case: O(n2) How long do the deletions take?

What algorithm is this?

a. Insertion Sort

b. Selection Sort

c. Heap Sort

d. Merge Sort

e. None of these

Page 16: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” Build with Heap MAX-PQ

16

9 4 8 1 6 10 12 13 2 3 14 20 75

1 2 3 4 5 6 7 8 9 10 11 120 13

13 14 12 3 6 10 9 8 2 1 4 5 720

PQ

Floyd’s Algorithm

Takes only O(n) time!

Page 17: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Heap MAX-PQ

17

1 2 3 4 5 6 7 8 9 10 11 120 13

13 14 12 3 6 10 9 8 2 1 4 5 720

PQ

13 10 12 3 6 7 9 8 2 1 4 5 2014

PQ

12 10 9 3 6 7 5 8 2 1 4 14 2013

PQ

9 10 8 3 6 7 5 4 2 1 13 14 2012

PQTotally incomprehensible as an array!

Page 18: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Heap MAX-PQ

18321312

10618

49

5

9 4 8 1 6 10 12 13 2 3 14 20 75

72014

Page 19: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Heap MAX-PQ

19

321312

10618

49

5

72014 1289

106312

1413

20

754

Build Heap

Note: 9 ends up being perc’d down as well since its invariant is violated by the time we reach it.

Page 20: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” deleteMaxes with Heap MAX-PQ

1289

106312

1413

20

754 1289

76312

1013

14

54 20 1285

7639

1012

13

4 14 20

1245

7638

109

12

13 14 20245

1638

79

10

12 13 14 2042

1635

78

9

10 12 13 14 20

Page 21: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort” with Heap MAX-PQ

21

How long does “build” take? Worst case: O(n) How long do the deletions take? Worst case: O(n lg n) What algorithm is this?

a. Insertion Sort

b. Selection Sort

c. Heap Sort

d. Merge Sort

e. None of these

42

1635

78

9

10 12 13 14 20

8 7 5 3 6 1 2 4 10 12 13 14 209

PQ Result

Page 22: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

“PQSort”

Sort(elts):

pq = new PQ

for each elt in elts:

pq.insert(elt);

sortedElts = new array of size elts.length

for i = 0 to elements.length – 1:

sortedElts[i] = pq.deleteMin

return sortedElts

22

What sorting algorithm is this?a.Insertion Sortb.Selection Sortc.Heap Sortd.Merge Sorte.None of these

Page 23: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

To Do

• Homework!• Read: Epp Section 9.5 and KW Section 10.1, 10.4,

and 10.7-10.10

23

Page 24: CS221: Algorithms and Data Structures Lecture #3.5 Sorting Takes Priority Steve Wolfman 2011W2 1

Coming Up

• More sorting!• Midterm (Feb 15th)

24