34
Bir İkili Ağaç Uygulaması HeapSort

12-heap Sort

  • Upload
    frhtngn

  • View
    34

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 12-heap Sort

Bir İkili Ağaç Uygulaması

HeapSort

Page 2: 12-heap Sort

Heap özelliği

• Bir ikili ağacın heap özellikli olabilmesi için aşağıdaki iki özelliği sağlamalıdır.

a) Ağacın bütün seviyeleri (yapraklar hariç) doludur. Yani ağaç tam ve dengeli bir ağaçtır.

b) Bir düğüm çocuklarından ya büyüktür yada çocuklarına eşittir.

Page 3: 12-heap Sort

1)Her düğümün içeriği çocuklarından büyüktür.

2)Ağaç tam ikili ağaçtır.

Page 4: 12-heap Sort

Ağaç tam bir ikili ağaçtır. Ama hiçbir düğüm çocuklarından büyük değildir.

Page 5: 12-heap Sort

121110987654321

i indisinin sol çocukları 2*i

i indisinin sağ çocukları 2*i+1

Page 6: 12-heap Sort

Heap üzerindeki temel işlemler

• Ebeveyn(i)

return i/2

• SolÇocuk(i)

return 2i

• SağÇocuk(i)

return 2i+1

Page 7: 12-heap Sort

Heapify (A, i)

1. l solÇocuk(i)

2. r SağÇocuk(i)

3. if l heap-size[A] and A[l] > A[i]

4. then max l

5. else max i

6. if r heap-size[A] and A[r] > A[max]

7. then max r

8. if max i

9. then exchange A[i] A[max]

10. Heapify(A, max)

Page 8: 12-heap Sort

Build-Heap(A)

1. heap-size[A] length[A]

2. for i length[A]/2 downto 1

3. do Heapify(A, i)

Page 9: 12-heap Sort

Heapsort (A)

1. Build-Heap(A)

2. for i length[A] downto 2

3. do exchange A[1] A[i]

4. heap-size[A] heap-size[A] - 1

5. Heapify(A, 1)

Page 10: 12-heap Sort

Bir diziyi heap ağacına dönüştürmek

• Yukarıdaki dizi bir ikili ağaca şu şekilde dizilebilir.

• Yapraklar( 2, 4, 9 ve 10) heap’tir.

7 2 4 10

9

3 5

6

543210

427536

76

910

Heapifiy

Page 11: 12-heap Sort

Bir diziyi heap ağacına dönüştürmek

9 2 4 10

7

3 5

6

543210

429536

76

710

Heapify

Page 12: 12-heap Sort

12

Bir diziyi heap ağacına dönüştürmek

9 2 4 5

7

3 10

6

543210

4291036

76

75

Heapify

Page 13: 12-heap Sort

13

Bir diziyi heap ağacına dönüştürmek

3 2 4 5

7

9 10

6

543210

4231096

76

75

Heapify

Page 14: 12-heap Sort

14

Bir diziyi heap ağacına dönüştürmek

7 2 4 5

3

9 10

6

543210

4271096

76

35

Heapify

Page 15: 12-heap Sort

15

Bir diziyi heap ağacına dönüştürmek

7 2 4 5

3

9 6

10

543210

4276910

76

35

Page 16: 12-heap Sort

16

Heap Sıralama

7 2 4 5

3

9 6

10

4276910

543210 76

35a[ ]:

Heap

Page 17: 12-heap Sort

17

Heap Sıralama

7 2 4 5

9 6

3

427693

543210 76

105a[ ]:

Heap değil sıralı

Heapify

Page 18: 12-heap Sort

18

Heap Sıralama

7 2 4 5

3 6

9

427639

543210 76

105a[ ]:

heapify Sıralı

Heapify

Page 19: 12-heap Sort

19

Heap Sıralama

3 2 4 5

7 6

9

423679

543210 76

105a[ ]:

Heap Sıralı

Page 20: 12-heap Sort

20

Heap Sıralama

3 2 4

7 6

5

423675

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

Page 21: 12-heap Sort

21

Heap Sıralama

3 2 4

5 6

7

423657

543210 76

109a[ ]:

Heap Sıralı

Heapify

Page 22: 12-heap Sort

22

Heap Sıralama

3 2

5 6

4

723654

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

Page 23: 12-heap Sort

23

Heap Sıralama

3 2

5 4

6

723456

543210 76

109a[ ]:

Heap Sıralı

Page 24: 12-heap Sort

24

Heap Sıralama

3

5 4

2

763452

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

Page 25: 12-heap Sort

25

Heap Sıralama

3

2 4

5

Heapify

763425

543210 76

109a[ ]:

Sıralı

Heapify

Page 26: 12-heap Sort

26

Heap Sıralama

2

3 4

5

762435

543210 76

109a[ ]:

Heap Sıralı

Page 27: 12-heap Sort

27

Heap Sıralama

3 4

2

765432

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

Page 28: 12-heap Sort

28

Heap Sıralama

3 2

4

765234

543210 76

109a[ ]:

Heap Sıralı

Page 29: 12-heap Sort

29

Heap Sıralama

3

2

765432

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

Page 30: 12-heap Sort

30

Heap Sıralama

2

3

765423

543210 76

109a[ ]:

Heap Sıralı

Page 31: 12-heap Sort

31

Heap Sıralama

2

765432

543210 76

109a[ ]:

Heap Sıralı

Page 32: 12-heap Sort

32

Heap Sıralama

765432

543210 76

109a[ ]:

Sıralı

Page 33: 12-heap Sort

33

Hatırlatma

Best case Average case Worst case Selection sort n2 n2 n2 Bubble sort n n2 n2 Insertion sort n n2 n2 Mergesort n * log2 n n * log2 n n * log2 n Quicksort n * log2 n n * log2 n n2 Heapsort n * log2 n n * log2 n n * log2 n

Page 34: 12-heap Sort

Bir İkili Ağaç Uygulaması

HeapSort