12-heap Sort

Preview:

Citation preview

Bir İkili Ağaç Uygulaması

HeapSort

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.

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

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

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

121110987654321

i indisinin sol çocukları 2*i

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

Heap üzerindeki temel işlemler

• Ebeveyn(i)

return i/2

• SolÇocuk(i)

return 2i

• SağÇocuk(i)

return 2i+1

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)

Build-Heap(A)

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

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

3. do Heapify(A, i)

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)

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

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

9 2 4 10

7

3 5

6

543210

429536

76

710

Heapify

12

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

9 2 4 5

7

3 10

6

543210

4291036

76

75

Heapify

13

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

3 2 4 5

7

9 10

6

543210

4231096

76

75

Heapify

14

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

7 2 4 5

3

9 10

6

543210

4271096

76

35

Heapify

15

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

7 2 4 5

3

9 6

10

543210

4276910

76

35

16

Heap Sıralama

7 2 4 5

3

9 6

10

4276910

543210 76

35a[ ]:

Heap

17

Heap Sıralama

7 2 4 5

9 6

3

427693

543210 76

105a[ ]:

Heap değil sıralı

Heapify

18

Heap Sıralama

7 2 4 5

3 6

9

427639

543210 76

105a[ ]:

heapify Sıralı

Heapify

19

Heap Sıralama

3 2 4 5

7 6

9

423679

543210 76

105a[ ]:

Heap Sıralı

20

Heap Sıralama

3 2 4

7 6

5

423675

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

21

Heap Sıralama

3 2 4

5 6

7

423657

543210 76

109a[ ]:

Heap Sıralı

Heapify

22

Heap Sıralama

3 2

5 6

4

723654

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

23

Heap Sıralama

3 2

5 4

6

723456

543210 76

109a[ ]:

Heap Sıralı

24

Heap Sıralama

3

5 4

2

763452

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

25

Heap Sıralama

3

2 4

5

Heapify

763425

543210 76

109a[ ]:

Sıralı

Heapify

26

Heap Sıralama

2

3 4

5

762435

543210 76

109a[ ]:

Heap Sıralı

27

Heap Sıralama

3 4

2

765432

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

28

Heap Sıralama

3 2

4

765234

543210 76

109a[ ]:

Heap Sıralı

29

Heap Sıralama

3

2

765432

543210 76

109a[ ]:

Heap değil Sıralı

Heapify

30

Heap Sıralama

2

3

765423

543210 76

109a[ ]:

Heap Sıralı

31

Heap Sıralama

2

765432

543210 76

109a[ ]:

Heap Sıralı

32

Heap Sıralama

765432

543210 76

109a[ ]:

Sıralı

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

Bir İkili Ağaç Uygulaması

HeapSort

Recommended