Sorting insert binary

3,516 views

Published on

Published in: Education, Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,516
On SlideShare
0
From Embeds
0
Number of Embeds
155
Actions
Shares
0
Downloads
148
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Sorting insert binary

  1. 1. 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
  2. 2. 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
  3. 3. 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;
  4. 4. 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.
  5. 5. 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.
  6. 6. 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;
  7. 7. 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: ∑ ⌈ ⌉
  8. 8. 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]
  9. 9. 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
  10. 10. 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) {
  11. 11. 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>
  12. 12. <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>
  13. 13. 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
  14. 14. 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
  15. 15. 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.

×