heap- sort - universitetet i oslo · algorithm heapsort(a): for i ←n/2 down to 1 do...

Post on 04-Sep-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Heap-sort

Haugsortering

16 25 14 13 11

5

15 12 7 20

9 6

1

2

5 7

3

8 9

64

10 11 12 13

5 9 6 15 12 7 20 16 25 14 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

12 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

Animasjon

12 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

70

12 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

70

121

12 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

70

121

12 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

OBS!

Vi bygger maks-heap:mor ≥ barn

120

71

7 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

12

OBS!

Vi bygger maks-heap:mor ≥ barn

120

71

7 20 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

12

202

200

71

7 12 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

200

71

7 12 15 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

153

200

151

15 12 7 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

73

200

151

15 12 7 16 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

7 163 4

200

161

16 12 7 15 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

7 153 4

200

161

16 12 7 15 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

7 153 4 65

200

161

16 12 7 15 6 25 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

7 153 4 65 256

200

161

16 25 7 15 6 12 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

252

7 153 4 65 126

250

161

16 20 7 15 6 12 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

7 153 4 65 126

250

161

16 20 7 15 6 12 9 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

7 153 4 65 126

97

250

161

16 20 9 15 6 12 7 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

9 153 4 65 126

77

250

161

16 20 9 15 6 12 7 14 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

9 153 4 65 126

77 148

250

161

16 20 14 15 6 12 7 9 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 65 126

77 98

250

161

16 20 14 15 6 12 7 9 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 65 126

77 98 59

250

161

16 20 14 15 6 12 7 9 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 65 126

77 98 59 1310

250

161

16 20 14 15 6 12 7 9 5 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 65 126

77 98 59 1310 1111

250

161

16 20 14 15 11 12 7 9 5 13 6

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 115 126

77 98 59 1310 611

250

161

16 20 14 15 11 12 7 9 5 13 6

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 115 126

77 98 59 1310 611

Maksheapen er ferdig. Vi begynner å bygge opplista fra indeks n – 1

250

161

16 20 14 15 11 12 7 9 5 13 6

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

25

202

14 153 4 115 126

77 98 59 1310 611

60

161

16 20 14 15 11 12 7 9 5 13 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

6

202

14 153 4 115 126

77 98 59 1310 2511

60

161

16 20 14 15 11 12 7 9 5 13 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

6

202

14 153 4 115 126

77 98 59 1310

200

161

16 6 14 15 11 12 7 9 5 13 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

62

14 153 4 115 126

77 98 59 1310

200

161

16 12 14 15 11 6 7 9 5 13 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

14 153 4 115 66

77 98 59 1310

200

161

16 12 14 15 11 6 7 9 5 13 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

14 153 4 115 66

77 98 59 1310

200

161

16 12 14 15 11 6 7 9 5 13 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

20

122

14 153 4 115 66

77 98 59 1310

130

161

16 12 14 15 11 6 7 9 5 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

13

122

14 153 4 115 66

77 98 59

160

131

13 12 14 15 11 6 7 9 5 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

16

122

14 153 4 115 66

77 98 59

160

151

15 12 14 13 11 6 7 9 5 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

16

122

14 133 4 115 66

77 98 59

160

151

15 12 14 13 11 6 7 9 5 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

16

122

14 133 4 115 66

77 98 59

50

151

15 12 14 13 11 6 7 9 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

122

14 133 4 115 66

77 98

150

51

5 12 14 13 11 6 7 9 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

15

122

14 133 4 115 66

77 98

150

141

14 12 5 13 11 6 7 9 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

15

122

5 133 4 115 66

77 98

150

141

14 12 9 13 11 6 7 5 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

15

122

9 133 4 115 66

77 58

50

141

14 12 9 13 11 6 7 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

122

9 133 4 115 66

77

15

140

51

5 12 9 13 11 6 7 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

14

122

9 133 4 115 66

77

15

140

131

13 12 9 5 11 6 7 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

14

122

9 53 4 115 66

77

15

70

131

13 12 9 5 11 6 14 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

122

9 53 4 115 66

15

130

71

7 12 9 5 11 6 14 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

13

122

9 53 4 115 66

15

130

91

9 12 7 5 11 6 14 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

13

122

7 53 4 115 66

15

60

91

9 12 7 5 11 13 14 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

6

122

7 53 4 115

15

120

91

9 6 7 5 11 13 14 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

12

62

7 53 4 115

15

120

91

9 11 7 5 6 13 14 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

12

112

7 53 4 65

15

60

91

9 11 7 5 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

6

112

7 53 4

110

91

9 6 7 5 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

11

62

7 53 4

50

91

9 6 7 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

62

73

90

51

5 6 7 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

9

62

73

90

71

7 6 5 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

9

62

53

50

71

7 6 9 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

62

70

51

5 6 9 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

7

62

60

51

5 7 9 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

6

50

6 7 9 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

6 7 9 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

6 7 9 11 12 13 14 15 16 20 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5

Algorithm HeapSort(A):

for i ← n/2 down to 1 do

downHeap(A,i,n)

for i ← n down to 2 do

swap A[i] and A[1]

downHeap(a,1,i-1)

return A

16 25 14 13 11

5

15 12 7 20

9 6

1

2

5 7

3

8 9

64

10 11 12 13

5 9 6 15 12 7 20 16 25 14 13 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

top related