06 b: hashing and priority queues - comp.nus.edu.sgcs1102s/slides/slides_06_b.bw.pdf · 06 b:...

45
Hashing Priority Queues Puzzlers 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February 26, 2010 Generated on Friday 26 th February, 2010, 09:23 CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 1

Upload: others

Post on 22-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

06 B: Hashing and Priority Queues

CS1102S: Data Structures and Algorithms

Martin Henz

February 26, 2010

Generated on Friday 26th February, 2010, 09:23

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 1

Page 2: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

1 Hashing

2 Priority Queues

3 Puzzlers

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 2

Page 3: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

1 HashingCollision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

2 Priority Queues

3 Puzzlers

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 3

Page 4: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Recap: Main Ideas

Implement set as array

Store values in array; compute index using a hash function.

Spread

The hash function should “spread” the hash keys evenly overthe available hash values

Collision

Hash table implementations differ in their strategies of collisionresolution: Two hash keys mapping to the same hash value

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 4

Page 5: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Separate Chaining

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 5

Page 6: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Hash Tables without Linked Lists

Idea

Store items directly into array; use alternative cells if a collisionoccurs

More formally

Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.

How to define hi?

hi(x) = (hash(x) + f (i)) mod TableSize

where f (0) = 0.

Load factor, λ

Ratio of number of elements in hash table to table size.CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 6

Page 7: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Linear Probing

Conflict resolution

f (i) = i

Clustering

As the load factor λ increases, occupied areas in the array tendto occur in clusters, leading to frequent unsuccessful insertiontries.

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 7

Page 8: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Quadratic Probing

Conflict resolution

f (i) = i2

Theorem

If quadratic probing is used, and the table size is prime, then anew element can always be inserted if the table is at least halfempty.

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 8

Page 9: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Double Hashing

Idea

Use a second hash function to find the jump distance

Formally

f (i) = i · hash2(x)

Attention

The function hash2 must never return 0. Why?

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 9

Page 10: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Double Hashing: Example

hash1(x) = x mod 10

hash2(x) = 7 − (x mod 7)

hi(x) = hashi(x) + i · hash2(x)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 10

Page 11: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

A Detail: Removal from Hash Table

Removal from separate chaining hash table

Straightforward: remove item from respective linked list (if it isthere)

Removal from Probing Hash Table: First idea

Set the respective table entry back to null

Problem

This operation interrupts probing chains; elements can be “lost”

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 11

Page 12: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Solution

pr iva te s t a t i c class HashEntry<AnyType> {publ ic AnyType element ;publ ic boolean i s A c t i v e ;publ ic HashEntry ( AnyType e ) {

th i s ( e , t rue ) ; }publ ic HashEntry ( AnyType e , boolean i ) {

element = e ; i s A c t i v e = i ; }}publ ic void remove ( AnyType x ) {

i n t currentPos = f indPos ( x ) ;i f ( i s A c t i v e ( currentPos ) )

a r ray [ currentPos ] . i s A c t i v e = fa lse ;}

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 12

Page 13: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

Remember Sets?

Idea

A Set (interface) is a Collection (interface) that does not allowduplicate entries.

HashSet

A HashSet is a hash table implementation of Set.

class HashSet<E> implements Set<E>

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 13

Page 14: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

1 Hashing

2 Priority QueuesMotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

3 Puzzlers

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 14

Page 15: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Motivation

Operations on queues

add(e): enter new element into queueremove(): remove the element that has been entered first

A slight variation

Priority should not be implicit, using the time of entry, butexplicit, using an ordering

Operations on priority queues

insert(e): enter new element into queuedeleteMin(): remove the smallest element

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 15

Page 16: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Application Examples

Printer queue: use number of pages as “priority”

Discrete event simulation: use simulation time as “priority”

Network routing: give priority to packets with strictestquality-of-service requirements

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 16

Page 17: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Simple Implementations

Unordered list: insert(e): O(1), deleteMin(): O(N)

Ordered list: insert(e): O(N), deleteMin(): O(1)

Search tree: insert(e): O(log N), deleteMin(): O(log N)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 17

Page 18: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Binary Heaps

Rough Idea

Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property

Completeness

Keep binary tree complete, which means completely filled, withthe possible exception of the bottom level, which is filled fromleft to right.

Heap-order

For every node X , the key in the parent of X is smaller than orequal to the key in X , with the exception of the root

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 18

Page 19: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Order in Binary Heap

Tree on the left is a binary heap; tree on the right is not!

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 19

Page 20: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Representation as Array

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 20

Page 21: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

insert

Idea

Add “hole” at bottom and “percolate” the hole up to the rightplace for insertion

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 21

Page 22: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: insert(14)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 22

Page 23: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: insert(14), continued

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 23

Page 24: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Analysis

Worst case

O(log N)

Average

2.607 comparisons

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 24

Page 25: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

deleteMin

Idea

Remove root, leaving “hole” at top. “Percolate” the hole down toa correct place for insertion of bottom element

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 25

Page 26: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: deleteMin()

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 26

Page 27: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: deleteMin(), continued

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 27

Page 28: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: deleteMin(), continued

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 28

Page 29: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Analysis

Worst case

O(log N)

Average

log N

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 29

Page 30: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

buildHeap

Initial setup

Build a heap from a given (unordered) collection of elements

Idea

“Percolate” every inner node down the tree

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 30

Page 31: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: buildHeap, percolateDown(7)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 31

Page 32: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: buildHeap, percolateDown(6), ..(5)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 32

Page 33: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: buildHeap, percolateDown(4), ..(3)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 33

Page 34: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Example: buildHeap, percolateDown(2), ..(1)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 34

Page 35: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Analysis

Bound

The runtime is bounded by the sum of all heights of all nodes

Theorem

For perfect binary tree of height h, containing 2h+1 − 1 nodes,sum of heights of nodes is 2h+1 − 1 − (h + 1).

Worst case

O(N)

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 35

Page 36: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Other Heap Operations

decreaseKey(p,∆)

Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up

increaseKey(p,∆)

Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down

delete(p)

Remove value at position pImplementation: decreaseKey(p,∞), then deleteMin()

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 36

Page 37: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

Priority Queues in Standard Library

class Pr ior i tyQueue<E> {boolean add (E e ) { . . . } / / add elementE p o l l ( ) { . . . } / / remove sma l les t

}

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 37

Page 38: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

1 Hashing

2 Priority Queues

3 PuzzlersLast Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 38

Page 39: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

Last Puzzler: It’s Elementary

What does the following program print?

publ ic class Elementary {publ ic s t a t i c void main ( S t r i n g [ ] args ) {

System . out . p r i n t l n (12345 + 5432 l ) ;}

}

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 39

Page 40: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

Scary...

I’m so scared when try running these codes onEclipse. When I run the file downloaded fromthe module homepage, the result is 17777.

But when I type it myself , the result is 66666.Maybe the number in teacher’s file is not thenormal number, right ?

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 40

Page 41: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

The “Fine” Print

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 41

Page 42: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

Constant Numbers in Java

(see Java Language Specification)

12345: int constant in decimal notation

0xff: int constant in hexadecimal notation

077: int constant in octal notation

45.23: double constant

5432l: long constant in decimal notation

0xffL: long constant in hexadecimal notation

077L: long constant in octal notation

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 42

Page 43: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

Useful Habit

Use “L” (and not “l”) to indicate long literals:

publ ic class Elementary {publ ic s t a t i c void main ( S t r i n g [ ] args ) {

System . out . p r i n t l n (12345 + 5432L ) ;}

}

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 43

Page 44: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

New Puzzler: The Last Laugh

What does the following program print?

publ ic class LastLaugh {publ ic s t a t i c void main ( S t r i n g [ ] args ) {

System . out . p r i n t l n ( ”H” + ” a ” ) ;System . out . p r i n t l n ( ’H ’ + ’ a ’ ) ;

}}

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 44

Page 45: 06 B: Hashing and Priority Queues - comp.nus.edu.sgcs1102s/slides/slides_06_B.bw.pdf · 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February

HashingPriority Queues

Puzzlers

Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

Next Week

Sorting, sorting, and more sorting!

CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 45