sorting insert binary
TRANSCRIPT
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
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
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;
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.
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.
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;
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:
∑⌈ ⌉
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]
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
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) {
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>
<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>
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
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
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.