14
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal

Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6]

  • Upload
    wayne

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6]. Gerth Stølting Brodal. Merge-Sort (Eksempel på Del-og-kombiner). A. sorteret. sorteret. n. p. q. q +1. r. 1. I starten kaldes Merge-Sort ( A ,1, n ). p. k. q. r. n. 1. A. }. }. sorteret. - PowerPoint PPT Presentation

Citation preview

Page 1: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Algoritmer og Datastrukturer 1

Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6]

Gerth Stølting Brodal

Page 2: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Merge-Sort(Eksempel på Del-og-kombiner)

p q q+1 r1 n

A sorteret sorteret

I starten kaldes MERGE-SORT(A,1,n)

Page 3: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

n

Ap q r1

L

R

} }

n1 n2

n2+1

n1+1

1

1

j

i

}

k

kopi

fletsorteret

sorteret

sorteretsorteret

Page 4: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Merge-Sort : AnalyseRekursionstræet

ObservationSamlet arbejde per lag er O(n)

O(n · # lag) = O(n · log2 n)Arbejde

Page 5: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Heap-Sort

Page 6: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Binær (Max-)Heap

19 17 16 12 9 15 1 2 11 7 3 10 141 2 3 4 5 6 7 8 9 10 11 12 13

Williams, 1964

heap-order 12 ≤ 17

2 11 7 3 14

12 9

17

10

15 1

16

191

2 3

4 5 6 7

8 9 10 11 12 13

Page 7: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Max-heap : Egenskaber

• Roden : knude 1• Børn til knude i : 2i og 2i+1• Faren til knude i : └i / 2┘

• Dybde : 1+└log2 n┘

( n = antal elementer)

2 11 7 3 14

12 9

17

10

15 1

16

191

2 3

4 5 6 7

8 9 10 11 12 13

Page 8: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Max-Heapify

Tid O(log n)

Før

Efter

2 11 7 3 14

12 9

17

10

15 1

16

5

2 7 3 14

9

10

15 1

16

5

11

12

17

Page 9: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Heap-Sort

Floyd, 1964

Williams, 1964

Tid O(n·log n)7 6 5 1 3 4 8 10 11

i = A.heap-size

A.length

sorteretMax-Heap

Page 10: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Build-Max-Heap

Tid O(n)

Tid for Build-Max-Heap

= Σ tid for Max-Heapify

= # røde kanter

Max-Heapify stierne (eksempel) Ikke-overlappende stier med samme #kanter (højre, venstre, venstre... )

≤ # røde kanter= n - dybde= O(n)

Page 11: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Sorterings-algoritmer

Algoritme Worst-Case Tid

Heap-SortO(n·log n)

Merge-Sort

Insertion-Sort O(n2)

Page 12: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Max-Heap operationer

2 11 7 3 14

12 9

17

10

15 1

16

191

2 3

4 5 6 7

8 9 10 11 12 13

Page 13: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

Max-Heap operation

Operation Worst-Case Tid

Max-Heap-Insert

O(log n)Heap-Extract-Max

Max-Increase-Key

Heap-Maximum O(1)

n = aktuelle antal elementer i heapen

Page 14: Algoritmer og Datastrukturer 1 Merge-Sort  [CLRS, kapitel 2.3] Heaps  [CLRS, kapitel 6]

PrioritetskøEn prioritetskø er en abstrakt datastruktur der gemmer en mængde af elementer med tilknyttet nøgle og understøtter operationerne:

– Insert(S, x)– Maximum(S)– Extract-Max(S)

Maximum er med hensyn til de tilknyttede nøgler.

En mulig implementation af en prioritetskø er en heap.