Anda di halaman 1dari 8

05/05/2013

1
HEAPSORT
JURUSANMATEMATIKA
FAKULTASMIPA
UNIVERSITASUDAYANA
2012
NAMAKELOMPOK;
AULIAATIKAPRAWIBTA (1208405005)
IMADEBUDHAYASA (1208405009)
MUSTARI (1208405011)
IPUTUGEDEDIANGERRY (1208405012)
NILUHNIKASARI (1208405024)
NIWAYANMERRYNIRMALA (1208405025)
GEDEHENDRAANDIKA (1208405026)
IKEDEKARYASAPUTRA (1208405048)
HEAP;
HEAP adalah struktur data yang berbentuk pohon
yang memenuhi sifatsifat heap yaitu jika B adalah
anak dari A, maka nilai yang tersimpan di simpul A
lebih besar atau sama dengan nilai yang tersimpan di
simpul B berlaku untuk MAXHEAP.
JENISHEAP
MAXHEAP(elemen maksimumdiroot):
A[parent(i)]A[i]
nilai nodelebih besar atau sama dengan nilai childnya
MINHEAP (elemen minimumdi root):
A[parent(i)]A[i]
nilai nodelebih kecil atau sama dengan nilai childnya
05/05/2013
2
CONTOHHEAP
12
10 7
6 2 4 7
2
4 7
12 4 8 10
nilainodenilaichildnya nilainodenilaichildnya
MAXHEAP MINHEAP
Pohon Biner ;
Dalam ilmu komputer , sebuah pohon biner (binary
tree) adalah sebuah pohon struktur data dimana
setiap simpul memiliki paling banyak dua anak.
Secara khusus anaknya dinamakan kiri dan kanan.
Penggunaan secara umum pohon biner adalah Pohon
biner terurut, yang lainnnya adalah heap biner.
Pohon Biner Seimbang
7
Pengingat:
Kedalaman nodeadalah jarak dari akar ke nodeitu
Kedalaman pohon adalah kedalaman dari nodeterdalam
Sebuah pohon biner dari kedalaman n
adalah seimbang jika semua node pada
kedalaman 0 sampai n2 memiliki dua anak
Seimbang Seimbang Tidak Seimbang
n-2
n-1
n
PohonBinerRataKiri
8
Sebuah pohon biner dari kedalaman n
yang seimbang adalah ratakiri apabila :
Memiliki 2
n
nodepada kedalaman n (pohon tersebut
penuh),atau
Memiliki 2
k
nodepada kedalaman k,untuk semua k < n,
dan semua daun pada kedalaman n ditempatkan disebelah
kiri sebisa mungkin
Rata kiri Tidak rata kiri
05/05/2013
3
HEAPSORT;
Heap Sort adalah sort yang memanfaatkan prinsip
pohon heap.
Pohon Heap adalah pohon biner complete dimana
nilai yang terkandung dalam simpul father (F) lebih
besar atau lebih kecil dari nilai kedua buah simpul
anaknya, sedangkan nilai simpul anak cabang kiti
bisa lebih besar, lebih kecil, atau sama dengan nilai
simpul anak cabang kanan.
INDEXING
parent(i) =i/2
left_child(i) =2i
right_child(i)=2i+1
1
2 3
4 5 6 7
HEAPIFY
Heapify adalah prosesmengubah binarytreemenjadi heaptree
Pseudocode:
Heapify(A,i)
1. l le [i]
2. r right [i]
3. ifl heapsize [A]and A[l]>A[i]
4. then largest l
5. else largest i
6. ifr heapsize [A]and A[r]> A[largest]
7. then largest r
8. iflargest i
9. then exchange A[i] A[largest]
10. Heapify (A, largest)
HEAPIFYCONTOH
2
7 10
1 3 4
7 > 2
10 > 7
10
7 2
1 3 7
7 > 2
10
7 7
1 3 2
05/05/2013
4
HEAPSORTALGORITHM
HEAPSORT(A)
1. BuildHeap (A)
2. fori length(A)downto2do
3. exchangeA[1]A[i]
4. heapsize[A]heapsize[A] 1
5. Heapify (A,1)
BuildHeap(A)
heapsize(A)length[A]
fori floor(length[A]/2)downto1do
Heapify (A,i)
Heapify(A,i)
l left[i]
r right[i]
ifl heapsize [A]andA[l] >A[i]
thenlargest l
elselargest i
ifr heapsize [A]and
A[r]>A[largest]
thenlargest r
iflargest i
thenexchange A[i]
A[largest]
Heapify (A,largest)
SIMULASIHEAPSORT
ArrayA=[1,4,89,77,12,50,23]
BuildHeap(A)
SIMULASIHEAPSORT
ArrayA=[1,4,89,77,12,50,23]
BuildHeap(A)
insert1
1
1 4 89 77 12 50 23
05/05/2013
5
SIMULASIHEAPSORT
ArrayA=[1,4,89,77,12,50,23]
BuildHeap(A)
insert1
1
insert4
1
4
4
1
4 1 89 77 12 50 23
SIMULASIHEAPSORT
ArrayA=[1,4,89,77,12,50,23]
BuildHeap(A)
insert1
1
insert4
1
4
4
1
insert89
4
1
8
9
8
9
1 4
89 1 4 77 12 50 23
SIMULASIHEAPSORT
insert77
8
9
1 4
8
9
77 4
77 1
89 77 4 1 12 50 23
BuildHeap(A)
SIMULASIHEAPSORT
insert77
8
9
1 4
8
9
77 4
77 1
insert12
8
9
77 4
1 12
89 77 4 1 12 50 23
BuildHeap(A)
05/05/2013
6
SIMULASIHEAPSORT
insert77
8
9
1 4
8
9
77 4
77 1
insert12
8
9
77 4
1 12
insert50
8
9
77 4
1 12
5
0
8
9
77
5
0
1 12 4
89 77 50 1 12 4 23
BuildHeap(A)
SIMULASIHEAPSORT
insert23
8
9
77
5
0
1 12 4
89 77 50 1 12 4 23
BuildHeap(A)
23
SIMULASIHEAPSORT
8
9
77
5
0
1 12 4
77 23 40 1 12 4 89
23
Deleteroot
23
77
5
0
1 12 4
77
23
5
0
1 12 4
Heapify
sorted
SIMULASIHEAPSORT
55 23 4 1 12 77 89
Deleteroot
77
23
5
0
1 12 4
Heapify
sorted
4
23
5
0
1 12
5
0
23 4
1 12
05/05/2013
7
SIMULASIHEAPSORT
23 12 4 1 55 77 89
Deleteroot Heapify
sorted
5
0
23 4
1 12
12
23 4
1
23
12 4
1
SIMULASIHEAPSORT
12 1 4 23 55 77 89
Deleteroot Heapify
sorted
23
12 4
1
1
12 4
12
1 4
SIMULASIHEAPSORT
4 1 12 23 55 77 89
Deleteroot
sorted
12
1 4
4
1
SIMULASIHEAPSORT
1 4 12 23 55 77 89
Deleteroot
sorted
1
Deleteroot
12
1 4
4
1
05/05/2013
8
SIMULASIHEAPSORT
1 4 12 23 55 77 89
sorted
Deleteroot Deleteroot
1
Deleteroot
12
1 4
4
1
Analysis
Dengan pemikiran:
Setiap Heapify memerlukan waktu (lg n).Terdapat O(n).
Oleh karena itu,BuildHeapmemerlukan O(nlg n).
Analisis Ketat:O(n)
Asumsikan n=2
k
1,merupakan sebuah pohon biner komplit.
Waktu yangdiperlukan oleh Heapify ketika bekerja pada
ketinggian nodehadalah O(h).
Totalwaktu =
dengan perhitungan :
0
1

k 1
h=k