68
CS 321. Algorithm Analysis & Design Lecture 4 Heap Sort

04 - 15 Jan - Heap Sort

Embed Size (px)

Citation preview

Page 1: 04 - 15 Jan - Heap Sort

CS 321. Algorithm Analysis & Design Lecture 4

Heap Sort

Page 2: 04 - 15 Jan - Heap Sort

4 9 2 1 8 5 6

Page 3: 04 - 15 Jan - Heap Sort

4 9 2 1 8 5 6

Page 4: 04 - 15 Jan - Heap Sort

4 9 2

1

8 5 6

Page 5: 04 - 15 Jan - Heap Sort

4 9 2

1

8 5 6

Page 6: 04 - 15 Jan - Heap Sort

4 9

21

8 5 6

Page 7: 04 - 15 Jan - Heap Sort

4 9

21

8 5 6

Page 8: 04 - 15 Jan - Heap Sort

4

9

21

8 5 6

Page 9: 04 - 15 Jan - Heap Sort

4

9

21

8 5 6

Page 10: 04 - 15 Jan - Heap Sort

4

9

21

8

5

6

Page 11: 04 - 15 Jan - Heap Sort

4

9

21

8

5

6

Page 12: 04 - 15 Jan - Heap Sort

4

9

21

8

5 6

Page 13: 04 - 15 Jan - Heap Sort

4

9

21

8

5 6

Page 14: 04 - 15 Jan - Heap Sort

4

9

21 85 6

Page 15: 04 - 15 Jan - Heap Sort

4

9

21 85 6

Page 16: 04 - 15 Jan - Heap Sort

4 921 85 6

Page 17: 04 - 15 Jan - Heap Sort

4 921 85 6

Can we speed up the find-min operations?

Page 18: 04 - 15 Jan - Heap Sort

4

921

85

6

Organize the elements so that finding minimum is “easy”.

Page 19: 04 - 15 Jan - Heap Sort

4

921

85

6

Organize the elements so that deleting the minimum element is “easy”.

Page 20: 04 - 15 Jan - Heap Sort

Store a set of n distinct numbers.

Inserting a new element and deleting the minimum element can be done in time proportional to (log n).

GOAL

Page 21: 04 - 15 Jan - Heap Sort

All jumbled up

4 9 2 1 8

Page 22: 04 - 15 Jan - Heap Sort

All jumbled up

4 9 2 1 8 3

Page 23: 04 - 15 Jan - Heap Sort

All jumbled up

4 9 2 1 8 3 6

Page 24: 04 - 15 Jan - Heap Sort

All jumbled up

4 9 2 1 8 3

Insert: O(1)

6

Page 25: 04 - 15 Jan - Heap Sort

All jumbled up

4 9 2 1 8 3

Insert: O(1) Delete-Min: O(n)

6

Page 26: 04 - 15 Jan - Heap Sort

All sorted

9 8 6 3 1

Page 27: 04 - 15 Jan - Heap Sort

All sorted

9 8 6 3

Page 28: 04 - 15 Jan - Heap Sort

All sorted

9 8 6 3

Delete-Min: O(1)

Page 29: 04 - 15 Jan - Heap Sort

All sorted

9 8 6 3

Delete-Min: O(1)

4

Page 30: 04 - 15 Jan - Heap Sort

All sorted

9 8 6 3

Delete-Min: O(1)

47

Page 31: 04 - 15 Jan - Heap Sort

All sorted

9 8 6 3

Insert: O(n) Delete-Min: O(1)

47

Page 32: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 33: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 34: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 35: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 36: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 37: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 38: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 39: 04 - 15 Jan - Heap Sort

In-between?

Invariant: The first element of the array is the minimum.

Page 40: 04 - 15 Jan - Heap Sort

4

921

85

6

Page 41: 04 - 15 Jan - Heap Sort

6

1

59

24

8

x is a child of y: x is larger than y.

Page 42: 04 - 15 Jan - Heap Sort

6

1

59

24

8

Page 43: 04 - 15 Jan - Heap Sort

6

1

59

24

8

Page 44: 04 - 15 Jan - Heap Sort

6

1

59

24

8

Page 45: 04 - 15 Jan - Heap Sort

61 5924 8

Page 46: 04 - 15 Jan - Heap Sort

61 5924 8

6

1

59

24

8

Page 47: 04 - 15 Jan - Heap Sort

61 5924 8

6

1

59

24

8

1

2 3

4 5 6 7

1 2 3 4 5 6 7

Page 48: 04 - 15 Jan - Heap Sort

61 5924 8

6

1

59

24

8

1

2 3

4 5 6 7

1 2 3 4 5 6 7

left-child(i) = 2i

Page 49: 04 - 15 Jan - Heap Sort

61 5924 8

6

1

41

2

4

1 2 3 4 5 6 7

Page 50: 04 - 15 Jan - Heap Sort

61 5924 8

6

1

41

2

4

1 2 3 4 5 6 7

left-child(i) = 2i

Page 51: 04 - 15 Jan - Heap Sort

left-child(i) = 2i

Page 52: 04 - 15 Jan - Heap Sort

left-child(i) = 2i

i

2i

Page 53: 04 - 15 Jan - Heap Sort

left-child(i) = 2i

i+k

2i + 2k

i

2i

Page 54: 04 - 15 Jan - Heap Sort

6

1

59

24

8

Delete Min

Page 55: 04 - 15 Jan - Heap Sort

6 1

5

9

24

8

Delete Min

Page 56: 04 - 15 Jan - Heap Sort

6 1

5

9

24

8

Delete Min

Page 57: 04 - 15 Jan - Heap Sort

6 1

5

9

24

8

Delete Min

Page 58: 04 - 15 Jan - Heap Sort

6 1

5

9

24

8

Delete Min

Page 59: 04 - 15 Jan - Heap Sort

6 1

5

9

24

8

Delete Min

Page 60: 04 - 15 Jan - Heap Sort

6 1

5

9

2

4

8

Delete Min

Page 61: 04 - 15 Jan - Heap Sort

6 1

2

9

54

8

Delete Min

Page 62: 04 - 15 Jan - Heap Sort

6

2

9

54

8

Insert

Page 63: 04 - 15 Jan - Heap Sort

6

3

2

9

54

8

Insert

Page 64: 04 - 15 Jan - Heap Sort

6 3

2

9

54

8

Insert

Page 65: 04 - 15 Jan - Heap Sort

6 3

2

9

54

8

Insert

Page 66: 04 - 15 Jan - Heap Sort

6

3

2

9 5

4

8

Insert

Page 67: 04 - 15 Jan - Heap Sort

6

3

2

9 5

4

8

Insert

Page 68: 04 - 15 Jan - Heap Sort

Heapify