1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu về các thuật toán - lec9

7 471 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sorting II: Heaps
Trường học Massachusetts Institute of Technology
Chuyên ngành Computer Science
Thể loại bài giảng
Năm xuất bản 2008
Thành phố Cambridge
Định dạng
Số trang 7
Dung lượng 741,87 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu về các thuật toán -

Trang 1

6.006 Introduction to Algorithms

Spring 2008

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms

Trang 2

Lecture 9: Sorting II: Heaps Lecture Overview

• Review: Heaps and MAX HEAPIFY

• Building a Heap

• Heap Sort

• Priority Queues (Recitation)

Readings

CLRS 6.1-6.4

Review

Heaps:

Parent(i) = �i/2�

Left(i) = 2i Right(i) = 2i + 1

Max heap property:

A[Parent(i)] ≥ A[i]

A[2] ←→

A[4] ←→

Trang 3

Violation

16

10

4

1 8 2

1

4

5

10 9

8

16 4 10 14 7 9 3 2 8 1

etc O(lg n) time Figure 1: Review from last lecture

Building a Heap

A[1 · · · n] converted to a max heap Observation: Elements A[�n/2 + 1� · · · n] are all leaves

of the tree and can’t have children

BUILD MAX HEAP(A):

heap size(A) = length(A) O(n) times for i ← � length[A]/2� downto 1

O(n lg n) overall See Figure 2 for an example

Trang 4

MAX-HEAPIFY (A,5)

no change MAX-HEAPIFY (A,4) Swap A[4] and A[8]

3 4

14

7

1

8 2

1

4

7

10 9

8

4 1 3 2 16 9 10 14 8 7 A

MAX-HEAPIFY (A,3) Swap A[3] and A[7]

3 4

14

7

1

8 2

1

4

7

10 9

8

MAX-HEAPIFY (A,2) Swap A[2] and A[5]

Swap A[5] and A[10]

16

10

4

14

7

1

8 2

1

4

5

10 9

8

MAX-HEAPIFY (A,1) Swap A[1] with A[2]

Swap A[2] with A[4]

Swap A[4] with A[9]

4

1 8 2

1

4

7

10 9

8

Figure 2: Example: Building Heaps

Trang 5

Sorting Strategy

• Build max heap from unordered array

• Find maximum element (A[1])

• Put it in correct position A[n], A[n] goes to A[1]

New root could violate max heap property but children remain max heaps

• Discard node n from heap (decrement heapsize)

Heap Sort Algorithm

n times for i =length[A] downto 2

do exchange A[1] ←→ A[i]

heap size[A] = heap size[A] − 1

O(n lg n) overall See Figure 3 for an illustration

Trang 6

10

4

14 7 1

8

2

1

4

5

10 9

8

10

4

14

7 1

8

2

1

4

7 9

8

9 3

10

8

2

1

4

7 8

16

10

4

14 7

1

8 2

1

4

7

10 9

8

10

4 14 7

1 8

2

1

4

5

8

9 3

2

8

1

4

5

16

10 9

149 1610 10

8

not part of heap

heap_size = 9 MAX_HEAPIFY (A,1)

Note: cannot run MAX_HEAPIFY with heapsize of 10

MAX_HEAPIFY (A,1)

MAX_HEAPIFY (A,1)

and so on

not part of heap not part of heap

Figure 3: Illustration: Heap Sort Algorithm

Trang 7

Priority Queues

This is an abstract datatype as it can be implemented in different ways

INSERT(S, X) : inserts X into set S

MAXIMUM(S): returns element of S with largest key

EXTRACT MAX(S): removes and returns element with largest key

INCREASE KEY(S, x, k): increases the value of element x’s key to new value k

(assumed to be as large as current value)

Ngày đăng: 15/11/2012, 10:24

TỪ KHÓA LIÊN QUAN