Loading in 5 sec....

CSE 326: Data Structures Lecture #5 Heaps MorePowerPoint Presentation

CSE 326: Data Structures Lecture #5 Heaps More

- 118 Views
- Uploaded on

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

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
- Frankye Jones’s frantic effort = one paycheck for Steve
- paycheck + www.americanforests.org = 1 tree / $1
- How about two trees per person?

Today’s Outline

- Things Steve Didn’t Finish on Wednesday (Heaps)
- Extra heap operations
- d-Heaps
- Return Quizzes

Other Priority Queue Operations

- 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

DecreaseKey, IncreaseKey, and Remove

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

Build(this)Heap

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

Thinking about Heaps

- 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

Solution: d-Heaps

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

One More Operation

- Merge two heaps. Ideas?

To Do

- Turn in Project I (due today)
- Start on Homework II (due Jan 20th)
- Read chapter 6 in the book

Coming Up

- Mergeable heaps
- Dictionary ADT and Self-Balancing Trees
- First project due (January 14th)
- A day off (January 17th)!
- Second homework assignment due (January 20th)

Download Presentation

Connecting to Server..