16
Kata Pengantar Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa, karena atas tuntunan dan kasih-Nya penulis mampu menyelesaikan makalah dengan judul Tugas Struktur Data : Metode Binary Insertion Sort. Makalah ini ditulis dengan tujuan untuk memberikan pengetahuan untuk dapat mempelajari dan memahami proses pengurutan dengan menggunakan metode Binary Insert secara mudah dan sesuai dengan kebutuhan. Dalam makalah ini juga penulis berusaha memberikan materi secara lengkap, sederhana dan mudah untuk diaplikasikan. Akhir kata penulis ingin mengucapkan terima kasih kepada para pembaca yang telah menyempatkan waktu untuk membacanya dan selamat mencoba. Bandung, Maret 2010 Tim Penulis

Sorting insert binary

Embed Size (px)

Citation preview

Page 1: Sorting insert binary

Kata Pengantar

Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa, karena atas tuntunan dan kasih-Nya

penulis mampu menyelesaikan makalah dengan judul Tugas Struktur Data : Metode Binary Insertion

Sort.

Makalah ini ditulis dengan tujuan untuk memberikan pengetahuan untuk dapat mempelajari

dan memahami proses pengurutan dengan menggunakan metode Binary Insert secara mudah dan

sesuai dengan kebutuhan. Dalam makalah ini juga penulis berusaha memberikan materi secara lengkap,

sederhana dan mudah untuk diaplikasikan.

Akhir kata penulis ingin mengucapkan terima kasih kepada para pembaca yang telah

menyempatkan waktu untuk membacanya dan selamat mencoba.

Bandung, Maret 2010

Tim Penulis

Page 2: Sorting insert binary

Daftar Isi

Kata Pengantar .............................................................................................................................................. 1

Bab 1 Pendahuluan ...................................................................................................................................... 3

Landasan Teori .......................................................................................................................................... 3

Pengurutan (Sorting) ............................................................................................................................. 3

Metode Binary Insertion (Penyisipan Biner) ......................................................................................... 5

Bab 2 Studi Kasus .......................................................................................................................................... 8

Latar Belakang Masalah ............................................................................................................................ 8

Identifikasi Masalah .............................................................................................................................. 8

Analisis Permasalahan .......................................................................................................................... 8

Implementasi ............................................................................................................................................ 8

Algoritma ............................................................................................................................................... 8

Source Code Program ........................................................................................................................... 9

Bab 3 Kesimpulan ........................................................................................................................................ 14

Kontribusi Masing-masing Anggota ............................................................................................................ 14

Daftar Pustaka ............................................................................................................................................. 15

Penutup ....................................................................................................................................................... 16

Page 3: Sorting insert binary

Bab 1

Pendahuluan

Landasan Teori

Pada bab ini , Anda akan belajar mengatur sekumpulan data menurut urutan tertentu, misalnya

urut naik atu urut turun. Pada makalah ini ,saya akan membahas salah satu metode pengurutan yaitu

Penyisipan biner (binary insertion sort).

Pada bab pendahuluan ini akan lebih banyak membahas tentang landasan teori sorting dan juga

metode binary insertion sort.

Pengurutan (Sorting)

Untuk mengetahui definisi algoritma pengurutan, saya akan mengutip definisi dari microsoft

book shelf:

Algoritma pengurutan adalah algoritma untuk meletakan kumpulan elemen data ke dalam urutan

tertentu, berdasrakan satu atau beberapa kunci dalam tiap-tiap elemen.

Ada dua macam urutan yang biasa di gunakan dalam proses pengurutan, yaitu urut naik dan

urut turun. Sebagai contoh, data bilang bulat 5, 2, 6, dan 4 dapat di urutkan naik menjadi 2, 4, 5, 6, atau

di urutkan turun menjadi 6, 5, 4, 2.

Salah satu pertanyaan yang mungkin muncul di benak anda adalah mengapa data harus di

urutkan? Jawaban yang paling sederhana adalah agar data tersebut dapat dilihat dengan mudah. Bisa

anda bayangkan jika suatu kamus disusun secara tak terurut.

Pada bab ini, saya secara kusus akan membahas pengurutan pada data larik.sebernanya ada

pengurutan yang lain, yaitu pengurutan data yang tersimpan di berkas (file). Hal ini biasanya diperlukan

jika kapasitas memori terbatas sehingga pengurutan dengan larik tidak dimungkinkan. Pengurutan data

yang tersimpan di berkas hanya akan saya singgung secara sekilas.

Untuk pembahasan pada bab ini, saya akan menggunakan data yang di simpan variabel berikut:

Const

Max = 10000;

Page 4: Sorting insert binary

Var

Data : ARRAY [0..Max] OF WORD;

Perhatikan indeks larik tersebut dimulai dari 0. Data yang sebenarnya disimpan mulai dari indeks

1, tetapi ada metode pengurutan yang memerlukan penampung sementara sehingga indeks 0 digunakan

untuk keperluan tersebut.

Pada beberapa metode pengurutan, Anda juga akan menemukan pemanggilan prosedur Tukar.

Kegunaan prosedur ini adalah definisi prosedur Tukar.

Procedure Tukar (var data1, data2: word);

Var

Temp: word;

Begin

Temp := Data1;

Data1 := Data2;

Data2 := Temp;

End;

Untuk contoh-contoh pengurutan data, saya akan selalu menggunakan data bilangan bulat

berjumlah Sembilan, yaitu:

12 35 9 11 3 17 23 15 31

Semua contoh pada ini akan mengurutkan data di atas menjadi urut naik. Dengan kata lain, data

tersebut harus disusun menjadi seperti berikut:

3 9 11 12 15 17 23 31 35

Ada dua hal yang biasanya digunakan untuk menilai baik tidaknya suatu metode pengurutan. Yang

pertama adalah jumlah pembandingan yang dilakukan atau sering disingkay dengan simbol C. yang

kedua adalah jumlah penukaran atau penggeseran data yang dilakukan atau sering disingkat dengan

symbol M.

Page 5: Sorting insert binary

Metode Binary Insertion (Penyisipan Biner)

Metode penyisipan biner (binary insertion sort) merupakan penggembangan dari metode

sebelumnya, penyisipan langsung. Idenya didasarkan pada kenyataan bahwa saat akan menggeser data

ke-i, data ke-I, sampai dengan i- 1 sebenarnya sudah dalam keadaan urut. Sebagai contoh, untuk kasusu

di atas, pada saat i = 4, dapat anda lihat ke-i sampai dengan ke – 3 sudah dalam keadaan urut : 9, 12, 35.

Dengan demikian, posisi dari data ke-i sebenarnya dapat di tentukan dengan pencarian biner yang akan

saya bahas pada bab ini.

Untuk lebih jelasnya, saya akan menggunakan contoh saat i = 8. Pada saat ini, data yang akan di

pindahkan adalah 15 sedangkan data di sebelah kiri 15 adalah sebagai berikut:

3 9 11 12 17 23 35

Pertama – tama dicari data pada posisi paling tengah diantara data di atas. Data yang terletak di

tengah adalah data ke empat, yaitu 12. Karena 12 < 15, berarti 15 harus di sisipkan di sebelah kanan 12.

Oleh karena itu, proses pencarian dilanjutkan lagi tetapi untuk data berikut:

17 23 35

Dari hasil ini, didapatkan data tengahnya adalah data 23. Karena 15 < 23 berarti 15 harus di

sisipkan di sebelah kiri 23. Proses di lanjutkan kembali tetapi kali ini dengan data yang hanya berjumlah

1, yaitu 17 saja. Karena 17 > 15, berarti 15 harus disisipkan tepat di sebelah kiri 17.

Algoritma penyisipan biner sendiri dapat dituliskan sabagai berikut:

1. i ← 2.

2. Selama ( i <= N ) kerjakan baris 3 sampai dengan 14.

3. X ← data *i+

4. l ← 1.

5. r ← i – 1.

6. Selama ( l < = r ) kerjakan baris 7 dan 8.

7. m ← (l + r) / 2.

8. Jadi ( x < data*m+ ) maka r ← m – 1, jika tidak 1 ← m + 1.

9. j ← i – 1.

10. Selama (j >= 1) kerjakan baris 11 dan 12.

Page 6: Sorting insert binary

11. A * j+1 + ← A * j +

12. j ← j -1.

13. Data * l + ← x.

14. i ← i + 1.

Ingat bahwa anda akan mempelajari pencarian biner lebih lanjut pada sebuah subbab terakhir,

Pencarian Biner, jadi saya belum akan membahas pencarian biner secara panjang lebar.

Berikut ini adalah contoh penyisipan , biner:

Contoh 1.

Procedure BinaryInsertionSort;

Var

i, j, x: word;

i, r, m: word;

begin

for i : = 2 to N do

begin

x : = Data [ i ] ;

l := 1 ;

r : = i - 1 ;

while (1 <= r) do

begin

m := (1 + r) div 2;

if (x < Data[m]) then

r := m – 1

else

1 := m + 1;

End;

For j : = I – 1 downto 1 do

Data[ j + 1 ] := Data [j];

Data [ l ] := x;

Page 7: Sorting insert binary

End;

End;

Contoh 2.

void BinaryInsertSort() {

int i, j, l, r, m, x;

for (I = 1; I < Max; i++) {

x = Data[i];

l = 0;

r = i - 1;

while (l <= r) {

m = (l + r) / 2;

if (x < Data[m])

r = m - 1;

else

l = m + 1; }

for (j = I - 1; j >= l; j--) {

Data[j+1] = Data[j];

Data[l] = x; }

}

Dari algoritma dan program di atas, dapat disimpulkan bahwa jumlah penggeseran untuk

metode penyisipan biner sama dengan penyisipan langsung. Yang berbeda adalah jumlah

pembandingan yang dilakukan. Jumlah pembandingan untuk metode penyisipan biner adalah:

∑⌈ ⌉

Page 8: Sorting insert binary

Bab 2

Studi Kasus

Latar Belakang Masalah

Identifikasi Masalah

Bagaimana membuat pengurutan secara Min to Max data mahasiswa yang datanya terdiri dari 6

atribut yakni NIM, Nama, Tanggal Lahir, Kelas, Tahun Masuk dan IPK.

Analisis Permasalahan

Dalam pelaksanaan pembuatan program seringkali dihadapi permasalahan pada algoritma

program, variable input dan output dan traversal program.

Implementasi

Algoritma

Dalam algoritma ini menjelaskan secara singkat proses sorting yang menggunakan metode binary insert

sort.

Procedure insertionSort(i/o nim, nama, tgl_lahir, kelas, thn_masuk, ipk : larik)

{I.S : array nim, nama, tgl_lahir, kelas, thn_masuk, ipk sudah terdefinisi}

{F.S : mengurutkan nim, nama, tgl_lahir, kelas, thn_masuk, ipk dan menampilkannya}

Kamus

value, I, j : integer

selesai : boolean

Algoritma

for i = 1 to maks_arr do

value nim[i], nama[i], tgl_lahir[i], kelas[i], thn_masuk[i], ipk[i]

j = i - 1

selesai = false

repeat

if nim[j] > value then

nim[j + 1] nim[j]

if nama[j] > value then

nama[j + 1] nama[j]

if tgl_lahir[j] > value then

tgl_lahir[j + 1] tgl_lahir[j]

Page 9: Sorting insert binary

if kelas[j] > value then

kelas[j + 1] kelas[j]

if thn_masuk[j] > value then

thn_masuk[j + 1] thn_masuk[j]

if ipk[j] > value then

ipk[j + 1] ipk[j]

j = j – 1

if j < 0 then

selesai = true

endif

else

selesai = true

endif

endif

endif

endif

endif

endif

until selesai;

nim[j + 1] := value;

nama[j + 1] := value;

tgl_lahir[j + 1] := value;

kelas[j + 1] := value;

thn_masuk[j + 1] := value;

ipk[j + 1] := value;

output (nim[i], nama[i], tgl_lahir[i], kelas[i], thn_masuk[i], ipk[i])

endfor

endprocedure

Source Code Program

Untuk implementasi program, saya menggunakan bahasa pemrogaman javascript yang berbasis

web.

Gmb. Tampilan Program

Page 10: Sorting insert binary
Page 11: Sorting insert binary

Berikut source code programnya :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Program Sorting</title>

<script language="javascript">

var data = [

[10108645, 'Dani', '1990-8-06', 'if4', '2006', 3.0],

[10108644, 'Adang', '1989-12-05', 'if3', '2008', 2.9],

[10108636, 'Taufiq', '1991-1-04', 'if2', '2010', 3.2],

[10108623, 'Edward', '1989-5-23', 'if1', '2009', 3.3],

[10108667, 'Jony', '1990-3-02', 'if5', '2007', 2.4],

[10108646, 'Budi', '1989-10-01', 'if6', '2008', 3.4],

];

function insertionsort(original, index){

var temp = [];

var i = 0;

for(i; i < original.length; i++) { // untuk mengambil data hanya pada kolom yang akan di sort

temp.push(original[i][index]);

}

for(i = 1; i < temp.length; i++){

var colom_data = temp[i], row=original[i];

for (var j = i; j > 0 && temp[j - 1] > colom_data; --j) {

Page 12: Sorting insert binary

temp[j] = temp[j - 1];

original[j] = original[j - 1];

}

temp[j] = colom_data;

original[j] = row;

}

build_table(original, 'table-sorted');

}

function build_table(data) {

var tbl = '<table border="1">';

tbl += '<thead><th><a onclick="insertionsort(data,0)" href="#">NIM</a></th><th><a

onclick="insertionsort(data,1)" href="#">NAMA</a></th><th><a onclick="insertionsort(data,2)" href="#">TGL

LAHIR</a></th><th><a onclick="insertionsort(data,3)" href="#">KELAS</a></th><th><a

onclick="insertionsort(data,4)" href="#">TAHUN MASUK</a></th><th><a onclick="insertionsort(data,5)"

href="#">IPK</a></th></thead>';

for(var i=0;i<data.length; i++){

tbl +=

'<tr><td>'+data[i][0]+'</td><td>'+data[i][1]+'</td><td>'+data[i][2]+'</td><td>'+data[i][3]+'</td><td>'+data[i][4]

+'</td><td>'+data[i][5]+'</td></tr>';

}

tbl += '</table>';

document.getElementById('table-sorted').innerHTML = tbl;

}

</script>

<style type="text/css">

</style>

</head>

Page 13: Sorting insert binary

<body>

<h3>Sorting table – Created by Dani, Adang, Taufiq, Edward </h3>

<div id="table-sorted"></div>

<em>klik pada table header untuk meng-urutkan data</em>

<script language="javascript">

build_table(data);

</script>

</body>

</html>

Page 14: Sorting insert binary

Bab 3

Kontribusi Masing-masing Anggota

Dani Rusda Taufani

Editor

Penulis dan penyusun bab 2 Case Study

Adang Purnama

Penyusun referensi sorting dan metode binary insert

M. Edward S

Penulis dan penyusun bab 1

Pengumpul bahan referensi di internet dan buku

Taufiq Wahyudi

Penulis dan penyusun bab 3

Pengumpul bahan referensi di internet dan buku

Page 15: Sorting insert binary

Daftar Pustaka

Yeppy, STRUKTUR DATA: Sorting Method,

http://hack.spyrozone.net/0221_Struktur_Data_Sorting_Method_by_y3ppy_WWW.SPYROZONE.NET_07

_Oktober_2007.html

Diakses pada hari Senin: 15 Maret 2010: 17.40 WIB

Wikipedia, Insertion sort, http://en.wikipedia.org/wiki/Insertion_sort

Diakses pada hari Senin: 15 Maret 2010: 21.15 WIB

Wikipedia, Sorting algorithm, http://en.wikipedia.org/wiki/Sorting_algorithm

Diakses pada hari Senin: 15 Maret 2010: 21.17 WIB

Jeffrey Stedfast, Binary Insertion Sort, http://jeffreystedfast.blogspot.com/2007/02/binary-insertion-

sort.html

Diakses pada hari Senin: 16 Maret 2010: 15.40 WIB

Pranata, Antony, 2000, Algoritma dan Pemrogaman, Penerbit ANDI Yogyakarta

Page 16: Sorting insert binary

Penutup

Puji syukur kami panjatkan kepada Tuhan Yang Maha Esa, atas diberikannya kemudahan selama

mengerjakan Tugas Makalah Binary Insert Sort ini. Kami sadar didalam penulisan makalah ini masih

banyak kekurangan, untuk itu penulis sangat menghargai saran dan masukan dari pembaca sehingga

kita kedepan kita mampu lebih baik lagi dalam berkarya. Semoga pembaca mendapatkan pengetahuan

baru setelah membaca laporan ini.