Anda di halaman 1dari 9

TUGAS RESUME 2

ALGORITMA DAN STRUKTUR DATA



O
L
E
H




NAMA : ANCY RINI ARTYA JULIMA
NIM : H12111272



PRODI MATEMATIKA JURUSAN MATEMATIKA
FMIPA UNHAS
2012

A. MERGE SORT
Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang
dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang
tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya
yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun
1945.
Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara
divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian
kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian
dimana bagian pertama merupakan setengah (jika data genap) atau setengah
minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan
kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok.
Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama
apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data
ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai
ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya
sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort
merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.
Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola
divide-and-conquer.
Berikut menjelaskan langkah kerja dari Merge sort.
1. Divide
Memilah elemen elemen dari rangkaian data menjadi dua bagian.
2. Conquer
Conquer setiap bagian dengan memanggil prosedur merge sort secara
rekursif
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan
rangkaian data berurutan. Proses rekursi berhenti jika mencapai elemen
dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat
satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa
bagian tersebut telah terurut sesuai rangkaian.
Contoh penerapan atas sebuah larik/array sebagai data sumber yang akan
diurutkan {3, 9, 4, 1, 5, 2} adalah sebagai berikut:
Diberikan list yang ingin disusun:
3 9 4 1 5 2

List diatas dibagi menjadi dua bagian:
list 1 | list 2:
11 1 5 2

Kedua list yang baru disusun sendiri-sendiri menjadi:
list 1 | list 2:
11 1 2 5

Setelah itu dubentuk list baru yang merupakan gabungan kedua list tadi:
List baru:
1

list 1 | list 2:
2 5

List baru:
1 2

list 1 | list 2:
5

List baru:
1 2 3

list 1 | list 2:
5
3 9 4
3 4 9
3 4 9
3 4 9
4 9
List baru:
1 2 3 4

list 1 | list 2:
5

List baru:
1 2 3 4 5

list 1 | list 2:


List baru:
1 2 3 4 5 9

list 1 | list 2:


Dan akhirnya akan didapat list yang sudah tersusun:
1 2 3 4 5 9

Berikut contoh program merge sort dengan rekursif:
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort;
Uses Crt;
Var
nil1 : Array[1..100] of Integer;
n,i,j,dum : Integer;
Begin
ClrScr;
Write('mau isi berapa data acak (integer) = '); readln(n);
For i := 1 to n Do
Begin
9
9

Write('Data Ke ',i,': ');Readln(nil1[i]);
End;
{* penyapuan proses}
for i:= 1 to n-1 do
for j:= i to n do
begin
if nil1[j] < nil1[i] then
begin
dum:=nil1[j];
nil1[j]:=nil1[i];
nil1[i]:=dum;
end;
end;
writeln;
writeln('Hasil Sortir');
for i := 1 to n do
write(nil1[i]:3);
readln;
end.


B. RECURRENCE
Recurrence merupakan suatu persamaan yang menggambarkan fungsi yang
lebih kecil dan nilai yang lebih kecil. Rekurens dapat dilakukan dengan 3 solusi
atau metode, yaitu:
- metode subtitusi
T(n) = 4T (n/2) + n
1.) anggap T(n) = O


2.) asumsi T() = C


3.) buktikan T(n)

dengan induksi
T(n) = 4T (n/2) + n
4

+ n
=

jika dan
Kemudian T(n) = O(


Subtitusi : harus memilih c yang cukup besar untuk bisa menangani
T(n) = untuk

untuk beberapa



- metode iterasi
ide dasarnya adalah dengan memperluas recurence dan mengubahnya
kedalam bentuk penjumlahan.














Selain cara di atas ada cara yang lebih mudah yaitu dengan pohon rekursi

















( )
( ) ( )
( ) ( ) ( )
( )
( )
4
4
4
log
log 1
log 3
0
( ) 3 / 4
3 / 4 3 /16
3 / 4 3 /16 3 / 64
3 / 4 9 /16 27 / 64
( ) 3 / 4 9 /16 27 / 64 ... 3 (1)
3

4
4 ( )
( )
n
i
n
i
T n n T n
n n T n
n n n T n
n n n T n
T n n n n n T
n n
n o n
O n

=
= +
(

= + +
( (

= + + +
( ( (

= + + +
( ( (

= + + + + +
| |
s + O
|
\ .
s +
s

2
( ) ( / 4) ( / 2) T n T n T n n = + +


















- Metode master
Metode master merupakan salah satu metode penyelesaian running time
dengan 3 cara berbeda untuk 3 kasus yang berbeda pula.
Mengingat recurence yang diberikan maka ada 3
kasus, yaitu:





Ketiga persamaan di atas tidak dapat menyelesaikan setiap recurence
karena ada perbedaan antara kasus 1 dan 2 serta kasus 2 dan 3.


( ) ( / 3) (2 / 3) T n T n T n n = + +
L
a
m
a
n
y
a
r
u
n
n
i
n
g
t
i
m
e
( ) ( / ) ( ) T n aT n b f n = +
( )
( )
( )
( )
( )
( )
log
log
log
log
log
0
1. ( )
( )
2. ( )
( ) lg
3. ( ) and ( / ) ( ), for some 1,
( ) ( )
b
b
b
b
b
a
a
a
a
a
f n O n
T n n
f n n
T n n n
f n n af n b cf n c n n
T n f n
c
+c
=
= O
= O
= O
= O s < >
= O
a. T(n) = 2 T(n/2) + n
T(n) = aT (n/b) + f(n)

case 2


T(n) =
T(n) = (




b. T(n) = 2T (n/2) +

case 3

T(n) =



c. T(n) = 4T (n/2) + n


Case 1
T(n) =








Sumber :
- http://smacinta.blogspot.com/2011/01/belajar-pascal.html
- http://al-poenya.blogspot.com/2011/12/makalah-merge-sort.html

Anda mungkin juga menyukai