2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen...

94
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer 2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1

Transcript of 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen...

Page 1: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

2.3 Sortieren

2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren

1

Page 2: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Stabilität von Sortieralgorithmen

•  Ein Sortieralgorithmus heißt stabil, wenn sich die relative Reihenfolge von gleichen Elementen während des Sortierens nicht ändert.

•  Beispiel:

2

1 1 2 2 1 3

3 2 2

3 2 2

1 1 1

1 1 1

stabil

nicht stabil

Page 3: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort

•  Annahme: R1, R2, ... , Rn ∈ 1,... ,k •  Idee: Bestimme zu jedem Ri die Zahl

der Elemente ≤Ri und sortiere Ri an die entsprechende Stelle

3

Page 4: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Algorithmus

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

4

Page 5: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Algorithmus

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

5

Eingabe: A[1..n] Ausgabe: C[1..n]

Page 6: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Algorithmus

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

6

B ist mit 0en initialisiert

Page 7: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Algorithmus

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

7

B[j] enthält die Anzahl der Elemente = j

Page 8: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Algorithmus

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

8

B[j] enthält die Anzahl der Elemente ≤ j

Page 9: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Algorithmus

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

9

B[j] enthält das j-te Element

Page 10: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

10

1 4 1 3 4 4 6 3 A n=8, k=6

Page 11: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

11

1 4 1 3 4 4 6 3

0 0 0 0 0 0

A

B

n=8, k=6

1 2 3 4 5 6

Page 12: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

12

1 4 1 3 4 4 6 3

0 0 0 1 0 0

A

B

n=8, k=6

1 2 3 4 5 6

Page 13: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

13

1 4 1 3 4 4 3

0 0 1 1 0 0

A

B

n=8, k=6

1 2 3 4 5 6

6

Page 14: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

14

1 4 1 3 4 6 3

1 0 1 1 0 0

A

B

n=8, k=6

1 2 3 4 5 6

4

Page 15: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

15

4 1 3 4 4 6 3

1 0 1 1 0 1

A

B

n=8, k=6

1 2 3 4 5 6

1

Page 16: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

16

1 4 1 4 4 6 3

1 0 1 2 0 1

A

B

n=8, k=6

1 2 3 4 5 6

3

Page 17: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

17

1 4 1 3 4 4 6 3

3 0 1 2 0 2

A

B

n=8, k=6

1 2 3 4 5 6

Page 18: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

18

1 4 1 3 4 4 6 3

3 0 1 2 2

A

B

n=8, k=6

1 2 3 4 5 6

+

0

Page 19: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

19

1 4 1 3 4 4 6 3

3 0 1 2 2

A

B

n=8, k=6

1 2 3 4 5 6

2

Page 20: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

20

1 4 1 3 4 4 6 3

3 0 1 2 2

A

B

n=8, k=6

1 2 3 4 5 6

+

2

Page 21: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

21

1 4 1 3 4 4 6 3

3 0 1 2 2

A

B

n=8, k=6

1 2 3 4 5 6

4

Page 22: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

22

1 4 1 3 4 4 6 3

0 1 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

+

3

Page 23: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

23

1 4 1 3 4 4 6 3

0 1 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

7

Page 24: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

24

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

7

Page 25: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

25

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

7

C 1 2 3 4 5 6 8 7

Page 26: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

26

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

7

C 1 2 3 4 5 6 8 7

Page 27: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

27

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

7

C 1 2 3 4 5 6 8 7

4

Page 28: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

28

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

6

C 1 2 3 4 5 6 8 7

4

Page 29: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

29

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

6

C 1 2 3 4 5 6 8 7

4

Page 30: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

30

1 4 1 3 4 4 6 3

7 8 4 2 2

A

B

n=8, k=6

1 2 3 4 5 6

6

1 C 1 2 3 4 5 6 8 7

4

Page 31: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

31

2 1

1 4 1 3 4 4 6 3

7 8 4

A

B

n=8, k=6

1 2 3 4 5 6

6

1 C 1 2 3 4 5 6 8 7

4

Page 32: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

32

2 1

1 4 1 3 4 4 6 3

7 8 4

A

B

n=8, k=6

1 2 3 4 5 6

6

1 C 1 2 3 4 5 6 8 7

4

Page 33: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

33

2 1

1 4 1 3 4 4 6 3

7 8 4

A

B

n=8, k=6

1 2 3 4 5 6

6

1 C 1 2 3 4 5 6 8 7

4 4

Page 34: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

34

2 1

1 4 1 3 4 4 6 3

7 8 4

A

B

n=8, k=6

1 2 3 4 5 6

5

1 C 1 2 3 4 5 6 8 7

4 4

Page 35: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

35

2 1

1 4 1 3 4 4 6 3

7 8 4

A

B

n=8, k=6

1 2 3 4 5 6

5

1 C 1 2 3 4 5 6 8 7

4 4

Page 36: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

36

2 1

1 4 1 3 4 4 6 3

7 8 4

A

B

n=8, k=6

1 2 3 4 5 6

5

3 1 C 1 2 3 4 5 6 8 7

4 4

Page 37: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

37

2 1

1 4 1 3 4 4 6 3

7 8 3

A

B

n=8, k=6

1 2 3 4 5 6

5

3 1 C 1 2 3 4 5 6 8 7

4 4

Page 38: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

38

2 1

1 4 1 3 4 4 6 3

7 8 3

A

B

n=8, k=6

1 2 3 4 5 6

5

3 1 1 C 1 2 3 4 5 6 8 7

4 4

Page 39: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

39

2 0

1 4 1 3 4 4 6 3

7 8 3

A

B

n=8, k=6

1 2 3 4 5 6

5

3 1 1 C 1 2 3 4 5 6 8 7

4 4 4

Page 40: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

40

2 0

1 4 1 3 4 4 6 3

7 8 3

A

B

n=8, k=6

1 2 3 4 5 6

4

3 6 1 1 C 1 2 3 4 5 6 8 7

4 4 4

Page 41: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

41

2 0

1 4 1 3 4 4 6 3

7 7 3

A

B

n=8, k=6

1 2 3 4 5 6

4

3 6 3 1 1 C 1 2 3 4 5 6 8 7

4 4 4

Page 42: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Beispiel

42

2 0

1 4 1 3 4 4 6 3

7 7 2

A

B

n=8, k=6

1 2 3 4 5 6

4

3 6 3 1 1 C 1 2 3 4 5 6 8 7

4 4 4

Page 43: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Aufwand

•  CountingSort(A[1..n],C[1..n]) for i ← 1 to k do B[ i ] ← 0 for i ← 1 to n do B[ A[ i ] ] ← B[ A[ i ] ]+1 for i ← 2 to k do B[ i ] ← B[ i ] + B[ i−1 ] for i ← n downto 1 do C[ B[ A[ i ] ] ] ← A[ i ] B[ A[ i ] ] ← B[ A[ i ] ]−1

43

O(k)

O(k+n)

O(n)

O(k)

O(n)

Page 44: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Counting-Sort: Aufwand

•  Counting-Sort ist nur sinnvoll, wenn k = O(n) und damit T(n) = O(n)

•  Counting-Sort verwendet keine Vergleiche

•  Counting-Sort ist stabil

44

Page 45: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort

•  Annahme: R1, R2, ... , Rn ∈ 0,... ,kd−1 •  „d-stellige Zahlen zur Basis k“ •  „Wörter der Länge d aus einem

Alphabet der Größe k“

45

Page 46: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort

•  RadixSort(A[1..n]) for i ← 1 to d do „sortiere A stabil nach Stelle i“

46

Page 47: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

47

F C T

H L P

N L P

R F T

H F N

P C A

F L L

Page 48: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

48

F C T

H L P

N L P

R F T

H F N

P C A

F L L

Page 49: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

49

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

Page 50: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

50

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

Page 51: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

51

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

Page 52: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

52

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

F C T

H L P

N L P

R F T

H F N

P C A

F L L

Page 53: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

53

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

F C T

H L P

N L P

R F T

H F N

P C A

F L L

Page 54: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

54

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

P C A

F L L

H F N

H L P

N L P

F C T

R F T

F C T

H L P

N L P

R F T

H F N

P C A

F L L

Page 55: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Beispiel

55

F C T

H L P

N L P

R F T

H F N

P C A

F L L

P C A

F L L

H F N

H L P

N L P

F C T

R F T

P C A

F L L

H F N

H L P

N L P

F C T

R F T

F C T

H L P

N L P

R F T

H F N

P C A

F L L

Page 56: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Aufwand

•  RadixSort(A[1..n]) for i ← 1 to d do „sortiere A stabil nach Stelle i“

56

Page 57: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Aufwand

•  RadixSort(A[1..n]) for i ← 1 to d do „sortiere A stabil mit Counting-Sort nach Stelle i“

57

Page 58: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Aufwand

•  RadixSort(A[1..n]) for i ← 1 to d do „sortiere A stabil mit Counting-Sort nach Stelle i“

58

T(k,d,n)=O(d×(n+k))

Page 59: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Radix-Sort: Aufwand

•  Beachte: Ist k gegeben, so benötigt man zur Darstellung von n verschiedenen Elementen mindestens d ≥ logk(n) Stellen → T(n) = ΩΩ(n×log n)

59

Page 60: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort

•  Annahme: R1, R2, ... , Rn gleichverteilt aus [0,1)

•  Idee: 1. Unterteile [0,1) in n „Buckets“

[0,1/n), [1/n,2/n), ... , [(n−1)/n,1) 2.  Füge die Ri in die Buckets ein (erwartet:

ein Element pro Bucket) 3.  Sortiere die Buckets 4. Hänge die Buckets aneinander

60

Page 61: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Algorithmus

•  BucketSort(A[1..n]) new B[0..n−1] for i ← 1 to n do push(B[⎣n×A[ i ]⎦], A[ i ]) for i ← 0 to n−1 do sort(B[ i ]) c ← 1 for i ← 0 to n−1 do for j ← 1 to size(B[ i ]) do A[c] ← B[ i ][ j ] c ← c+1

61

Page 62: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

62

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 63: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

63

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 64: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

64

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 65: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

65

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 66: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

66

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 67: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

67

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 68: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

68

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 69: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

69

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 70: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

70

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

0.82 [0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 71: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

71

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

0.82

0.20

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 72: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

72

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

0.82

0.20

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 73: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

73

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

0.82

0.20

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 74: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

74

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

0.82

0.20

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 75: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

75

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73

0.24

0.75

0.31 0.21

0.12

0.82

0.20

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 76: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

76

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.24 0.21 0.20

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 77: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

77

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 78: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

78

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 79: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

79

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 80: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

80

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 81: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

81

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 82: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

82

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05

[0.9,1.0) [0.8,0.9) [0.7,0.8) [0.6,0.7) [0.5,0.6) [0.4,0.5) [0.3,0.4) [0.2,0.3) [0.1,0.2) [0.0,0.1) 0

1 2

5

8 7 6

9

3 4

n=10

Page 83: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

83

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59

0.73 0.75

0.31

0.12

0.82

0.20 0.21 0.24

0.05 n=10

Page 84: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Beispiel

84

0.73 0.24 0.75 0.31 0.12 0.21 0.05 0.20 0.82 0.59

0.59 0.73 0.75 0.31 0.12 0.82 0.20 0.21 0.24 0.05

n=10

Page 85: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  Diskrete Zufallsvariable

•  Erwartungswert

•  Varianz

85

Page 86: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  X=1 mit 50 % Wahrscheinlichkeit X=3 mit 50 % Wahrscheinlichkeit

•  Erwartungswert: E(X) = 1×0.5 + 3×0.5 = 2.0

•  X=1 mit 75 % Wahrscheinlichkeit X=3 mit 25 % Wahrscheinlichkeit

•  Erwartungswert: E(X) = 1×0.75 + 3×0.25 = 1.5

86

Page 87: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  X=1 mit 50 % Wahrscheinlichkeit X=3 mit 50 % Wahrscheinlichkeit

•  Varianz: V(X) = (1−2)2×0.5 + (3−2)2×0.5 = 1.0

•  X=1 mit 75 % Wahrscheinlichkeit X=3 mit 25 % Wahrscheinlichkeit

•  Varianz: V(X) = (1−1.5)2×0.75 + (3−1.5)2×0.25 = 0.75

87

Page 88: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  Sei ni die Zahl der Elemente in Bucket i •  Wahrscheinlichkeit, dass ein Element in

Bucket i fällt ist p=1/n •  Wahrscheinlichkeit, dass genau k

Elemente in Bucket i fallen ist “Binomialverteilung”

88

Page 89: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  Erwartungswert

•  Varianz

•  Sortieraufwand, z.B. Insertion-Sort

89

Page 90: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  Erwarteter Sortieraufwand für Bucket i

90

Page 91: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  Erwarteter Sortieraufwand für Bucket i

91

Page 92: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  Erwarteter Sortieraufwand für alle Buckets:

92

Page 93: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Bucket-Sort: Analyse

•  BucketSort(A[1..n]) new B[0..n−1] for i ← 1 to n do push(B[⎣n×A[ i ]⎦], A[ i ]) for i ← 0 to n−1 do sort(B[ i ]) c ← 1 for i ← 0 to n−1 do for j ← 1 to size(B[ i ]) do A[c] ← B[ i ][ j ] c ← c+1

93

O(n)

O(n)

O(n) erwartet

O(n) (!)

O(n) erwartet

Page 94: 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 ...€¦ · Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Spezielle Sortierverfahren

•  Counting-Sort: O(n+k) •  Radix-Sort: O(d×(n+k)) •  Bucket-Sort: O(n) erwartet

94