Heap- sort - Universitetet i oslo · Algorithm HeapSort(A): for i ←n/2 down to 1 do...

63
Heap- sort Haugsortering

Transcript of Heap- sort - Universitetet i oslo · Algorithm HeapSort(A): for i ←n/2 down to 1 do...

Page 1: Heap- sort - Universitetet i oslo · 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]

Heap-sort

Haugsortering

Page 2: Heap- sort - Universitetet i oslo · 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]

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

Page 3: Heap- sort - Universitetet i oslo · 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]

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

Page 4: Heap- sort - Universitetet i oslo · 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]

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

Page 5: Heap- sort - Universitetet i oslo · 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]

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

Page 6: Heap- sort - Universitetet i oslo · 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]

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

Page 7: Heap- sort - Universitetet i oslo · 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]

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

Page 8: Heap- sort - Universitetet i oslo · 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]

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

Page 9: Heap- sort - Universitetet i oslo · 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]

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

Page 10: Heap- sort - Universitetet i oslo · 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]

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

Page 11: Heap- sort - Universitetet i oslo · 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]

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

Page 12: Heap- sort - Universitetet i oslo · 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]

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

Page 13: Heap- sort - Universitetet i oslo · 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]

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

Page 14: Heap- sort - Universitetet i oslo · 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]

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

Page 15: Heap- sort - Universitetet i oslo · 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]

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

Page 16: Heap- sort - Universitetet i oslo · 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]

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

Page 17: Heap- sort - Universitetet i oslo · 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]

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

Page 18: Heap- sort - Universitetet i oslo · 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]

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

Page 19: Heap- sort - Universitetet i oslo · 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]

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

Page 20: Heap- sort - Universitetet i oslo · 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]

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

Page 21: Heap- sort - Universitetet i oslo · 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]

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

Page 22: Heap- sort - Universitetet i oslo · 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]

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

Page 23: Heap- sort - Universitetet i oslo · 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]

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

Page 24: Heap- sort - Universitetet i oslo · 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]

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

Page 25: Heap- sort - Universitetet i oslo · 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]

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

Page 26: Heap- sort - Universitetet i oslo · 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]

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

Page 27: Heap- sort - Universitetet i oslo · 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]

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

Page 28: Heap- sort - Universitetet i oslo · 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]

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

Page 29: Heap- sort - Universitetet i oslo · 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]

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

Page 30: Heap- sort - Universitetet i oslo · 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]

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

Page 31: Heap- sort - Universitetet i oslo · 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]

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

Page 32: Heap- sort - Universitetet i oslo · 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]

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

Page 33: Heap- sort - Universitetet i oslo · 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]

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

Page 34: Heap- sort - Universitetet i oslo · 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]

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

Page 35: Heap- sort - Universitetet i oslo · 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]

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

Page 36: Heap- sort - Universitetet i oslo · 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]

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

Page 37: Heap- sort - Universitetet i oslo · 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]

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

Page 38: Heap- sort - Universitetet i oslo · 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]

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

Page 39: Heap- sort - Universitetet i oslo · 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]

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

Page 40: Heap- sort - Universitetet i oslo · 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]

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

Page 41: Heap- sort - Universitetet i oslo · 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]

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

Page 42: Heap- sort - Universitetet i oslo · 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]

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

Page 43: Heap- sort - Universitetet i oslo · 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]

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

Page 44: Heap- sort - Universitetet i oslo · 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]

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

Page 45: Heap- sort - Universitetet i oslo · 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]

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

Page 46: Heap- sort - Universitetet i oslo · 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]

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

Page 47: Heap- sort - Universitetet i oslo · 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]

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

Page 48: Heap- sort - Universitetet i oslo · 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]

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

Page 49: Heap- sort - Universitetet i oslo · 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]

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

Page 50: Heap- sort - Universitetet i oslo · 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]

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

Page 51: Heap- sort - Universitetet i oslo · 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]

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

Page 52: Heap- sort - Universitetet i oslo · 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]

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

Page 53: Heap- sort - Universitetet i oslo · 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]

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

Page 54: Heap- sort - Universitetet i oslo · 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]

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

Page 55: Heap- sort - Universitetet i oslo · 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]

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

Page 56: Heap- sort - Universitetet i oslo · 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]

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

Page 57: Heap- sort - Universitetet i oslo · 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]

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

Page 58: Heap- sort - Universitetet i oslo · 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]

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

Page 59: Heap- sort - Universitetet i oslo · 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]

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

Page 60: Heap- sort - Universitetet i oslo · 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]

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

Page 61: Heap- sort - Universitetet i oslo · 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]

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

Page 62: Heap- sort - Universitetet i oslo · 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]

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

Page 63: Heap- sort - Universitetet i oslo · 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]

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