1 / 13

# CSE 326: Data Structures Lecture #5 Heaps More - PowerPoint PPT Presentation

CSE 326: Data Structures Lecture #5 Heaps More. Steve Wolfman Winter Quarter 2000. We get slide printouts every class. 4 pages of notes per day  50 students  3 lectures per week  10 weeks per quarter  engineer’s fudge factor  10,000 pages one 60 foot pine tree  80,000 pages

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

## PowerPoint Slideshow about ' CSE 326: Data Structures Lecture #5 Heaps More' - cecily

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### CSE 326: Data StructuresLecture #5Heaps More

Steve Wolfman

Winter Quarter 2000

• 4 pages of notes per day  50 students  3 lectures per week  10 weeks per quarter  engineer’s fudge factor  10,000 pages

• one 60 foot pine tree  80,000 pages

• Frankye Jones’s frantic effort = one paycheck for Steve

• paycheck + www.americanforests.org = 1 tree / \$1

• How about two trees per person?

• Things Steve Didn’t Finish on Wednesday (Heaps)

• Extra heap operations

• d-Heaps

• Return Quizzes

• decreaseKey

• given a pointer to an object in the queue, reduce its priority value

• increaseKey

• given a pointer to an object in the queue, increase its priority value

• remove

• given a pointer to an object in the queue, remove it

• buildHeap

• given a set of items, build a heap

void decreaseKey(int obj) {

assert(size >= obj);

temp = Heap[obj];

newPos = percolateUp(obj, temp);

Heap[newPos] = temp;

}

void increaseKey(int obj) {

assert(size >= obj);

temp = Heap[obj];

newPos = percolateDown(obj, temp);

Heap[newPos] = temp;

}

void remove(int obj) {

assert(size >= obj);

percolateUp(obj,

NEG_INF_VAL);

deleteMin();

}

BuildHeapFloyd’s Method. Thank you, Floyd.

12

5

11

3

10

6

9

4

8

1

7

2

pretend it’s a heap and fix the heap-order property!

12

5

11

3

10

6

9

4

8

1

7

2

12

12

5

11

5

11

3

10

2

9

3

1

2

9

4

8

1

7

6

4

8

10

7

6

12

12

5

2

1

2

3

1

6

9

3

5

6

9

4

8

10

7

11

4

8

10

7

11

1

3

2

4

5

6

9

12

8

10

7

11

runtime:

• Observations

• finding a child/parent index is a multiply/divide by two

• operations jump widely through the heap

• each operation looks at only two new nodes

• inserts are at least as common as deleteMins

• Realities

• division and multiplication by powers of two are fast

• looking at one new piece of data sucks in a cache line

• with huge data sets, disk accesses dominate

1

• Each node has d children

• Still representable by array

• Good choices for d:

• optimize performance based on # of inserts/removes

• choose a power of two for efficiency

• fit one set of children in a cache line

• fit one set of children on a memory page/disk block

3

7

2

4

8

5

12

11

10

6

9

12

1

3

7

2

4

8

5

12

11

10

6

9

• Merge two heaps. Ideas?

• Turn in Project I (due today)

• Start on Homework II (due Jan 20th)

• Read chapter 6 in the book

• Mergeable heaps

• Dictionary ADT and Self-Balancing Trees

• First project due (January 14th)

• A day off (January 17th)!

• Second homework assignment due (January 20th)