P. 1
Makalah Pratikum Struktur Data

Makalah Pratikum Struktur Data

|Views: 1,166|Likes:
Published by Tetra Geun Yeong

More info:

Published by: Tetra Geun Yeong on Jan 12, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

05/23/2013

pdf

text

original

MAKALAH PRATIKUM STRUKTUR DATA

Disusun Oleh : Tetra Octaria Saputri Kelas : 3c

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS PAKUAN BOGOR

KATA PENGANTAR

Syukur Alhamdullilah penulis panjatkan kehadirat Allah SWT. Atas rahmat dan hidayahnya sehingga makalah ini dapaat diselesaikan dengan baik. Padaa kesempataan ini tidak lupa, penulis mengucapakan terima kasih kepaadaa semua pihak yang telah membantu penyelesaian makalah ini diantaranya : 1. Istakhori selaku Asisten dosen struktur data. 2. Orang tua yang memberikan dorongan dan dukungan baik dorongan moril maupun materil kepada penulis. 3. Teman-teman yang telah memberikan dorongan dan kerjasamanya secara langsung maupun tidak langsung. Penulis sangat menyadari bahwa sesungguhnya dalam makalah ini masih banyak sekali kekurangan baik dari segi bahasa maupun dalam system pembuatan makalah. Oleh karena itu penulis sangat mengharapkan kritik dan saran dari pembaca guna menyempurnakan makalah-makalah dimasa akan datang. Demikian penyusunan makalah Ini, penulis sangat berharap semoga makalah ini dapat bermanfaat bagi penulis maupun bagi para pembaca.

maka B-tree tidak perlu diseimbangkan secara berkala seperti struktur data pohon seimbang yang lain. successor. simpul internal digabungkan atau dipisahkan. Sebuah B-tree dijaga keseimbangannya dengan membuat semua simpul daun berada pada ketinggian yang sama. Hal disebabkan karena sebuah B-tree didesain dapat memiliki cabang dalam jumlah besar dan mengandung sejumlah kunci pada tiap simpulnya sehingga ketinggian pohon relatif kecil. Hal ini berarti hanya sedikit simpul yang harus dibaca dari . Sebagai contoh. Idealnya. Ketinggian ini akan meningkat perlahan saat elemenelemen ditambahkan pada pohon. minimum. tetapi peningkatan ketinggian secara keseluruhan jarang terjadi. Untuk tetap mempertahankan cakupan yang telah didefinisikan. Ketika data disisipkan atau dipidah dari struktur data. Batas atas dan batas bawah jumlah simpul anak biasanya tetap untuk implementasi tertentu. 1. setiap simpul internal hanya dapat memiliki 2 atau 3 simpul anak. Pengertian B-tree adalah struktur data pohon yang paling umum digunakan dalam basis data dan file system. sejumlah simpul anak dapat bertukar sepanjang simpul. misalnya self-balancing binary search trees. maximum.BAB I B-TREE Pendahuluan Struktur pohon menunjang berbagai operasi dinamik dasar termasuk search. maka struktur pohon seimbang seperti Btree sebaiknya digunakan. Untuk memastikan ketinggian pohon sekecil mungkin dan menghasilkan waktu yang terbaik. Karena adanya cakupan (range) pada simpul anak. B-tree menjaga data tetap terurut dan seimbang. dan delete dalam proporsional waktu terhadap ketinggian pohon. B-tree dapat menghabiskan tempat karena simpul tidak selalu penuh. Ide di balik B-tree ini yaitu simpul internal dapat memiliki sejumlah simpul anak dalam cakupan (range) yang telah terdefinisi. insert. sebuah pohon seimbang dan ketinggiannya adalah log n di mana adalah jumlah simpul pohon. dalam 2-3 B-tree (disebut juga 2-3 tree). Akan tetapi. predecessor.

1. Chiat.Tujuannya yaitu untuk mendapatkan akses pada data yang cepat. Rudolf Bayer dan Ed McCreight. nama penciptanya. 1. Hal ini biasanya muncul ketika kebanyakan simpul berada di penyimpanan sekunder seperti hard drives. Kaufman. Kemudian pada tahun 1972. Mereka menamakan metode tersebut dengan Btree. M. McCreight di Boeing Scientific Research Labs mengajukan sebuah mekanisme indeks eksternal dengan waktu proses yang relatif rendah untuk kebanyakan operasi-operasi yang telah disebutkan sebelumnya. R. Pada akhir tahun 1960-an perusahaan komputer dan grup penelti independen bersaing mengembangkan tujuan umum file systems dan disebut dengan “metode akses” untuk mesinmesin mereka. penyeimbangan muncul tidak terlalu sering.1 Sejarah B-Tree B-tree memiliki sejarah yang pendek tetapi penting. Dengan memaksimalkan jumlah simpul anak pada setiap simpul internal. B.1 Sejarah B-Tree B-Tree memiliki kelebihan dibanding implementasi alternatif yang lain karena waktu akses dalam simpulnya jauh di atas waktu akses antarsimpul. Biasanya nilai ini diset agar setiap simpul mengisi sebuah blok penuh atau pada ukuran yang analog di tempat penyimpanan sekunder. Di Sperry Univac Corporation (bekerja sama dengan Universitas Case Western Reserve). . ketinggian pohonN berkurang. dan yang lainnya mengembangkan dan mengimplementasi sebuah sistem yang menghasilkan operasi insert dan find dalam tata cara yang menyerupai metode B-tree yang akandi jelaskan nanti. atau Boeing karena mereka bekerja di Boeing Scientific Research Labs pada waktu itu. M. B juga dapat berarti Bayer. Yang paling diyakini adalah B merupakan singkatan dari balanced yang artinya seimbang. tidak menjelaskan arti dari huruf B pada B-Tree tersebut.disk untuk mengambil data. Para pencipta B-Tree. S.Bayer dan E. Cole. karena semua simpul daun pada pohon berada pada tingkat (level) yang sama. H. dan efisiensi meningkat. dan yang lainnya mengembangkan sistem yang mirip di Control Data Corporation (bekerja sama dengan Unversitas Stanford). Radcliffe. Secara terpisah. Schwartz.

dihapus. di mana m > 1 merupakan bilangan bulat. Akar pohon B-tree paling sedikit memiliki 2 simpul anak. Search tree adalah pohon dimana setiap subpohon dari sebuah simpul mempunyai kunci lebih kecil dari subpohon kanan simpul tersebut. Kunci disimpan dalam urutan membesar. 2 Struktur dari B-Tree 2. Kunci dalam sebuah simpul secara konsep berada di antara subpohon-subpohon dan lebih besar dari kunci di subpohon kiri simpul dan lebih kecil dari kunci di subpohon kanan simpul.1 Struktur Simpul B-Tree Tidak seperti pohon biner. karena ketinggian dan jumlah akses dapat diperkecil dengan mengambil bilangan m yang besar. Setiap elemen simpul internal adalah nilai-nilai yang berbeda yang membagi subpohonnya. tetap (berukuran bsar) sekaligus. m adalah orde. di mana setiap simpulnya terdiri dari (m/2) sampai m buah simpul anak. Setiap kunci memiliki anak yang berhubungan dengan kunci tersebut. Balanced tree atau pohon seimbang adalah pohon dimana tidak ada simpul daun yang lebih panjang terhadap daun yang lain. Ini adalah struktur yang baik jika pohon digunakan pada memori yang lambat. yang dapat diakses hanya dengan beberapa operasi.1. Sebuah simpul juga mempunyai . Sebuah B-Tree didesain untuk digunakan padadisk. Disk hanya dapat membaca dan menulis blok data ukuran. setiap simpul pada B-tree dapat memiliki sejumlah variabel kunci dan anak. yaitu akar dari subpohon yang mengandung semua simpul dengan kunci-kunci lebih kecil atau sama dengan kunci simpul akar tetapi lebih besar dari kunci sebelumnya. dan (2) faktor cabang pohon sangat tinggi (dalam prakteknya lebih besar dari 1000) sehingga pohon dengan ketinggian kecil dapat menyimpan kunci dalam jumlah yang sangat besar. Sebuah B-tree menyimpan banyak kunci di setap simpulnya sehingga1) sebuah disk dapat mengakses anyak kunci. dan diambil dengan jaminan proses dengan waktu terburuk.2 Definisi B-Tree B-Tree adalah sebuah m-ary balancedvsearch tree khusus yang digunakan dalam basis data karena strukturnya memungkinkan data yang disimpan untuk disisipi.

Setiap simpul internal terdiri dari maksimum U anak dan – selain akar – minimum L anak. Simpul internal di B-tree – simpulsimpul yang bukan merupakan simpul daun – biasanya digambarkan sebagai susunan elemen dan pointer anak yang teratur. Semua nilai di paling kiri subpohon lebih kecil dari a1. Sebagai contoh. Hubungan antara U dan L ini mengakibatka bahwa dua simpul setengah penuh dapat digabung menjadi simpul yang legal. jika sebuah simpul internal memiliki tiga simpul anak (atau subpohon) maka simpul tersebut pasti meiliki dua nilai berbeda atau elemen a1 dan a2. Setiap simpul dapat memiliki paling banyak 2t-1 kunci atau setara dengan 2t anak. dan semua nilai di paling kanan subpohon akan lebih besar dari a2. setiap simpul harus memiliki paling sedikit t-1 kunci. Sebagai contoh. tetapi tidak memiliki simpul anak dan tidak ada pointer anak. Btree tetap menjaga nilai-nilai di setiap simpul pada pohon. Simpul daun memiliki larangan yang sama pada jumlah elemen. Hal ini memungkinkan untuk menghapus dan memasukkan nilai baru ke dalam B-tree dan mengatur pohon sesuai dengan ketentuannya. dan akar tidak memiliki anak sama sekali. dan satu simpul penuh dapat dipisah menjadi dua simpul yang legal (jika ada ruangan untuk menggeser satu elemen ke simpul orang tuanya). akar akan menjadi satu-satunya simpul pada pohon. Simpul daun masih memiliki batas atas pada jumlah anak. dan dapat menggunakan struktur yang . jumlah elemennya lebih kecil satu dari jumlah pointer anak. jadi memiliki simpul-simpul yang berbeda pada simpul daun dan simpul internal. Sebuah B-tree memiliki jumlah minimum anak yang mungkin untuk setiap simpul disebut sebagai minimization factor atau faktor minimalisasi. Untuk semua simpul internal selain akar. semua nilai di subpohon tengah akan berada di antara a1 dan a2 .anak tambahan paling kanan yaitu akar dari subpohon yang mengandung semua kunci lebih besar dari semua kunci pada simpul. Nilai U harus 2L ataupun 2L-1. simpul akar diperbolehkan melanggar ketentuan tersebut dengan memiliki lebih kecil dari t-1 kunci. ketika ada lebih sedikit dari L-1 elemen pada keseluruhan pohon.Beberapa pohon seimbang menyimpan nilai hanya pada simpul daun. Jika t adalah faktor minimalisasi. jadi setiap simpul internal harus paling sedikit setengah penuh. Dalam keadaan tertentu. jumlah elemennya antara L-1 dan U-1. tetapi tidak memiliki batas bawah.

insert.sama pada setiap simpul. Bagaimanapun.Walaupun hal ini tidak mempengaruhi tinggi asimtotik kasus terburuk. h≤ logt n+1 2 Bukti : h n≥ 1+(t-1) ∑ 2t k-1 k=1 = 1+2 (t-1) th-1 t-1 = 2 th-1 jadi = n+1 ≥ th 2 Lalu kedua sisi di-logaritma.3 Waktu Proses pada B-Tree Sebuah B-tree dengan ketinggian n+1 dapat menghabiskan U waktu sebanyak jumlah nilai pada B-tree dengan ketinggian n. sejak simpul daun tidak memiliki anak. dan delete bertambah sesuai ketinggian pohon.dengan tinggi h dan derajat minimum t lebih besar atau sama dengan 2. struktur khusus untuk simpul daun pada B-tree akan meningkatakan performa. pertambahan pada B-tree leih lambat dibandingakan jumlah elemen. Karena percabangan dari B-tree bisa lebih besar dibandingkan struktur pohon seimbang yang lain. 2. . 2. Sehingga jumlah simpul yang dikunjungi selama pencarian cenderung lebih kecil dari yang dibutuhkan oleh struktur pohon yang lain. tetapi waktu yang dibutuhkan untuk melakukan operasi search. basis dari logaritma cenderung lebih besar. Tinggi dari kasus terburuk adalah O(logn). ketinggian dari n-kunci B-tree . B-tree cenderung memiliki tinggi yang lebih kecil dari pohon lain yang memiliki tinggi asimtotik yang sama. Dibandingkan dengan pohon seimbang lain.2 Ketinggian pada B-Tree Untuk n lebih besar atau sama dengan satu.

Karena setiap simpul cenderung memiliki faktor percabangan yang besar (jumlah anak yang besar). pass sekali ini akan mengurangi jumlah kunjungan pada simpul dan jumlah akses disk. Dengan kata lain. Oleh karena itu. maka sebuah B-tree akan meminimumkan jumlah akses disk yang dibutuhkan. Sebuah simpul pada pohon B-tree memiliki t-1 <= K <= 2t-1 kunci yang terurut. maka perlu untuk menelusuri beberapa simpul sebelum menempatkan kunci yang diinginkan. sebuah B-tree adalah struktur data yang ideal untuk situasi di mana data tidak dapat disimpan pada tempat penyimpanan primer dan akses pada tempat penyimpanan sekunder membutuhkan banyak waktu. Dua kali pass yang lebih sederhana pada pohon untuk mempesbaiki pelanggaran mungkin terjadi. simpul harus eitulis pada tempat penyimpanan sekunder dengan operasi write dilambangkan dengan Disk-Write. dan insert ditunjukkan di bawah. Sama halnya. Algoritma-algoritma di bawah diasumsikan bahwa semua simpul yang . 3 Algoritma B-Tree Algoritma untuk operasi search. semua referensi pada simpul yang diberikan sebelumnya dengan melakukan operasi read dilambangkan dengan Disk-Read. Faktor minimalisasi biasanya dipilih agar ukuran total setiap simpul berkorespondensi pada sebuah ukuran blok yang banyak pada sebuah alat penyimpanan. Karena semua simpul diasumsikan disimpan pada tempat penyimpanan sekunder (disk) daripada tempat peyimpanan primer (memori). Berapa lama waktu yang dibutuhkan untuk mencari subpohon dari W yang mengandung X ? Dengan mengguanakan binary search dibutuhkan. Kasus terburuk : . Karena B-tree berusaha melakukan akses disk seminimum mungkin dan simpul-simpul biasanya disimpan pada disk. apabila sebuah simpul dimodifikasi dan tidak lagi diperlukan. Perlu diperhatikan bahwa algoritma-algoritma ini hanya sekali pass. create. Pilihan ini memudahkan dan mengoptimumkan akses disk.K = t-1 untuk semua simpul . algoritma tersebut tidak menelusuri pohon kembali. Waktu pencarian kasus terburuk pada derajat n-kunci B-tree adalah O(log(n)). Jika akses ke setiap simpul memerlukan disk access.X tidak ada pada pohon Diberikan sebuah simpul W dala pohon T.

i) if (leaf[x]) then return NIL else Disk-Read(ci[x]) return B-Tree-Search(ci[x]. Dimulai dari akar.1 Search Operasi search pada B-tree mirip dengan search pada binary tree.k) i <. Tetntu saja pencarian dapat terhenti apabila simpul yang diinginkan telah ditemukan. B-Tree-Search (x. pencarian pointer anak di sebelah kiri segera dilakukan.1 while (i<=n[x] and k>keyi[x]) do i <. maka proses search pada B-Tree adalah O(log n). Disk-Write. pohon ditelusuri dari atas sampai kebawah. Karena waktu yang dibutuhkan untuk melakukan search tergantung pada tinggi pohon.i + 1 if (i<=n[x] and k=keyi[x]) then return (x. Binary search umum digunakan (tidak selalu) di antara simpul untuk menemukan nilai yang berbeda dan anak pohon yang dicari. Implementasi secara detail dari Disk-Read. Anak yang sesuai dipilih dengan melakukan pencarian linier pada nilai-nilai dalam simpul. memilih pointer anak yang nilainya berada pada sisi nilai yang dicari. k) .memiliki parameter telah memiliki operasi Disk-Read yang sesuai. Simpul baru\ dibuat dan di-assign dengan fungsi Allocate-Node. Jika semua nilai yang dicari lebih kecil dari nilai yang diinginkan. pencarian dilakukan pada pointer anak paling kanan. Berikut ini adalah pseudocodes proses search pada B-tree. Akan tetapi. dan AllocateNode tergantung pada sistem operasi (operating system). daripada memilih diantara anak kiri dan anak kanan pada Btree. Setelah menemukan nilai lebih besar atau sama dengan nilai yang diinginkan. sebuah search pada Btree harus membuat pilihan sebanyak n cara. 3.

maka ada tempat kosong. Kunci adalah nama kota dan terurut pada setiap simpul. Sisipkan elemen baru pada simpul. Proses ini dapat berulang sepanjangperjalanan menuju akar dan memungkinkan pemisahan simpul akar. Jika simpul daun mengandung lebih sedikit dari nilai maksimum jumlah elemen legal. temukan simpul daun di mana elemen baru seharusnya berada. Karena pemisahan simpul menghasilkan pemindahan sebuah kunci ke simpul orang tuanya. Berikutnya. di bawah adalah B-tree dengan orde 2 (simpul paling sedikit memiliki 2 kunci dan 3 pointer anak). simpul daun harus dipisah menjadi dua simpul. . tetap jaga keterurutan elemen simpul. Pada akhirnya kita akan menemukan kunci yang dicari ataupun menemukan simpul daun pada tingkat bawah dari Btree tanpa pointer anak menuju simpul bawah lain dan tanpa kunci yang kita inginkan. Hal ini memerlukan dua kali pass. “Dallas” tidak berada simpul . Selainnya apabila simpul penuh. Simpul dibatasi dengan kurung siku. 3.Contoh search pada B-tree Sebagai contoh. Sekali lagi “Dallas: tidak ada dalm simpul tetapi terurut sebelum “Denver”. Untuk menemukan kunci “Dallas”. jadi kita menelusuri pointer anak yang pertama menuju ke simpul berikutnya yang ditandai dengan “X”. Pas pertama mencari simpul di mana kunci harus diletakkan. simpul yang tepat untuk kunci harus dicari menggunakan algoritma yang sama seperti search pada B-tree. simpul tersebut tidak boleh penuh atau operasi pemisahan dilakukan kembali.Pemisahan simpul akar ditangani sebagai kasus khusus karena simpul baru harus dibuat untuk menampung kunci tengah dari simpul lama. kita mulai pencarian dari akar simpul paling atas.2 Insertion Untuk melakukan insertion pada sebuah B-tree. tetapi terurut di antara “Chicago” dan “Hoboken” jadi kita menelusuri pointer anak yang di tengah. Semua proses insertion terjadi pada simpul daun. menandakan bahwa kunci yang dicari tidak ada dalam B-tree. Pada sisi lain dari setiap kunci adalah pointer anak yang menghubungkan kunci pada simpul berikutnya. Dengan melakukan pencarian pada pohon. kunci disisipkan pada simpul. yang kedua melakukan pemisahan yang diperlukan pada simpul-simpul sebelumnya.

k) r <.FALSE n[s] <. diusahakan menghindari pass kedua dengan memastikan bahwa simpul orang tuanya tidak pernah penuh. satu elemen pindah ke simpul orangtuanya. hal ini menjamin setiap simpul orang tua tidak pernah perlu dipisahkan dan menghapus kebutuhan pass kedua pada pohon.r B-Tree-SplitChild(s.1. Walaupan hal ini mengakibatkan operasi pemisahan yang teidak diperlukan.root[T] if (n[r] = 2t–1)then s <.s leaf[s] <. Maksimum jmlah elemen setiap simpul adalah U-1. merupakan jumlah elemen minimum pada setiap simpul. Nilai pemisah tersebut ditambahkan pada simpul orang tuanya. Berikut ini adalah pseudocodes proses insert dan split pada B-tree. Jika jumlahnya genap maka U = 2L. Untuk memenuhi hal tersebut. dst.Pemisahan dilakukan sebagai berikut : median dipilih di antara elemen daun dan elemen baru. yang dapat mnyebabkan adanya pemisahan lagi. Nilai yang lebih kecil dari median diletakkan di simpul kiri yang baru dan nilai yang lebih besar dari median diletakkan di simpul kanan yang baru.k) . tetapi elemen lain ditambahkan. Setengah dari jumlah tersebut adalah L-1. sehingga ada 2L-2 elemen pada simpul.0 c1 <. dengan median sebagai nilai pemisah. Jika jumlahnya ganjil maka U = 2L dan setiap simpul baru mengandung (U-2)/2 = L-1 elemen dan kemudian menjadi simpul legal. Ketika sebuah simpul dipisah. • B-Tree-Insert(T.r) B-Tree-InsertNonfull(s. Jadi mungkin untuk membagi jmlah maksimum U-1 elemen menjadi dua simpul legal.1. Karena setiap akses pada simpul berhubungan dengan akses disk. algoritma yang telah dijelaskan memisahkan setiap simpul penuh yang ditemukan ketika menelusuri pohon. Proses pemisahan berjalan dalam waktu yang linear sehingga mempengaruhi pada O(t logt n) pada waktu pelaksanaan insert pada Btree.Allocate-Node() root[T] <.

n[x] + 1 Disk-Write(x) else while (i>=1 and k<keyi[x])do i <.k) • B-Tree-Insert-Nonfull(T.i .k) i <.i + 1 B-Tree-InsertNonfull(ci[x].cj+t[y] n[y] <.t-1 for j<-1 to t-1 do keyj[z] <.n[x] if (leaf[x])then while (i>=1 and k<keyi[x])do keyi+1[x] <.1 keyi+1[x] <.i .i + 1 Disk-Read(ci[x]) if (n[ci[x]] = 2t-1)then B-Tree-SplitChild(x.k n[x] <.Allocate-Node() leaf[z] <.i.ci[x]) if (k>keyi[x])then i <.t-1 .i.keyj+t[y] if not leaf[y]then for j<-1 to t do cj[z] <.1 i <.leaf[y] n[z] <.y) z <.k) • B-Tree-Split-Child(x.keyi[x] i <.else B-Tree-InsertNonfull(r.

keyt[y] n[x] <. gambar. pengambilan.for j<-n[x]+1 downto i+1 do cj+1[x] <. Karena basis data tidak dapat diatur seluruhnya di memori.n[x] downto i do keyj+1[x] <.cj[x] ci+1 <. sistem pencatatan medis. termasuk nama. dengan tepat memanipulasi. dan mengmabil data. Basis data ada koleksi data diatur dalam suatu cara yang memfasilitasi proses updating. mencari basis . dan pengelolaan data. TELSTRA. maka harus mendukung operasi seperti pengambilan dan penyimpanan secara cepat. Data dapat terdiri atas apa saja. menyimpan. sistem penyimpanan. Btree sering digunakan mengurutkan data dan akses yang cepat. Produk basis data contohnya Microsoft SQL Server. alamat. IBMDB2. dan aspek-aspek penting bisnis modern lain yang tidak terhitung banyaknya. Basis data sudah umum dan digunakan setiap hari. Karena komputer berkembangcepat. sistem pemesanan tiket pesawat. dan tiket. dan angka. Contohnya. sistem pemesanan pesawat mungkin mengatur basis data penerbangan yang tersedia.2 terabyte. para pelanggan. basis data sering diatur secara eltronik dengan menggunakan database management system. Seorang guru mungkin mengatur basis data nama dan nilai murid. Sybase Adaptive Server.z for j <. Sebagai contoh. mengurus basis data tagihan pelanggan dengan 51milyar baris dan data sebanyak 4.dan Oracle melayani dasar dari sistem akuntnsi. sebuah perusahaan telekomunikasi Australia. Sistem pengelolaan basis data adalah komponen penting dalam operasi bisnis sehari-hari. Supaya basis data berguna dan dapat digunakan.n[x] + 1 Disk-Write(y) Disk-Write(z) Disk-Write(x) 4 Contoh Aplikasi B-Tree Salah satu penerapan struktur data B-tree adalah database atau basis data. Contohnya. Basis data terdiri dari jutaan data dalam ukuran gigabyte.keyj[x] keyi[x] <.

Sebuah B-Tree didesain untukdigunakan pada disk.data yang tidak terurut terdiri dari n nilai kunci memiliki alternatif yang lain karena waktu akses dalam simpulnya cepat. . Salah satu penerapan struktur data B-tree adalah database atau basis data. yang dapat diakses hanya dengan beberapa operasi. Sebuah Btree menyimpan banyak kunci di setap simpulnya sehingga dapat mengakses banyak kunci. dan faktor cabang pohon sangat tinggi sehingga pohon dengan ketinggian kecil dapat menyimpan kunci dalam jumlah yang sangat besar.

dimana data-data tidak perlu diurutkan terlebih dahulu. Tempat pencarian data tersebut dapat berupa array dalam memori. Misalnya terdapat array satu dimensi sebagai berikut: .1 Teknik-teknik Searching o Sequential Search adalah suatu teknik pencarian data dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir. bias juga pada file pada external storage. Pengertian Searching Searching adalah pencarian data dengan menelusuri tempat pencarian data tersebut. Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching. Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal). Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal). 5.BAB II SEARCHING 5.

int flag=0. #include <stdio.i<8. int data[8] = {8.Dari program diatas.6. int cari.10. misalnya 6. sedangkan jika tidak ada maka akan ditampilkan tulisan “TIDAK ADA”.Kemudian program akan meminta data yang akan dicari.&cari).scanf("%d".7. for(int i=0. . Jika ada maka akan ditampilkan tulisan “ADA”.1.i++){ if(data[i] == cari) flag=1.11. terlihat bahwa dilakukan perulangan untuk mengakses semua elemen array data satu persatu berdasarkan indeksnya.h> #include <conio.100}. printf("masukkan data yang ingin dicari = "). } if(flag==1) printf("Data ada!\n"). else printf("Data tidak ada!\n"). .h> void main(){ clrscr().-2.

apakah sama atau lebih kecil. . tapi kita langsung membukanya pada 2/3 atau ¾ dari tebal buku.Jika lebih besar. . Contoh ilustrasi: jika kita hendak mencari suatu nama di dalam buku telepon.Data diambil dari posisi 1 sampai posisi akhir N . Hanya bernilai 0 atau 1. . maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1 .Program menggunakan sebuah variabel flag berguna untuk menandai ada atau tidaknya data yang dicari dalam array data.Kemudian data yang dicari dibandingkan dengan data yang ditengah. . maka flag akan diset menjadi 1. misal yang berawalan dengan huruf T. teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci tertentu. Teknik searching ini dilakukan dengan perkiraan letak data.Jika data sama.Jika lebih kecil. berarti ketemu.. Prinsip pencarian biner adalah: . jika tidak ada maka flag akan tetap bernilai 0.Semua elemen array data akan dibandingkan satu persatu dengan data yang dicari dan diinputkan oleh user.Flag pertama kali diinisialiasasi dengan nilai 0. o Interpolation Search.Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2 . o Binary Search adalah teknik pencarian data dalam dengan cara membagi data menjadi dua bagian setiap kali terjadi proses pengurutan.Jika ditemukan. Jadi kita mencari data secara relatif terhadap jumlah data. Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian. maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1 . maka kita tidak akan mencarinya dari awal buku. atau lebih besar? .

Rumus posisi relatif kunci pencarian dihitung dengan rumus: Contoh program : .

Pengurutan dapat dilakukan secara ascending dan descending. merge sort • Pengurutan berkurang menurun (diminishing increment sort method) • Shell sort 6. seperti gelembung yang keluar dari sebuah gelas bersoda. Sorting Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu. Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak / berpindah ke posisinya yang tepat. Algoritma ini . exchange sort • Pengurutan berdasarkan prioritas (priority queue sorting method) • Selection sort. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.Pengurutan data dalam struktur data sangat penting untuk data yang bertipe data numerik ataupun karakter. heap sort • Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method) • Insertion sort. METODE PENGURUTAN DATA: • Pengurutan berdasarkan perbandingan (comparison-based sorting) • Bubble sort.BAB III SORTING 6. Bubble Sort Buble Sort merupakan metode sorting termudah. sehingga tersusun secara teratur menurut aturan tertentu.1. tree sort • Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method) • Quick sort.

Ketika satu proses telah selesai. tergantung jenis pengurutannya. maka bubble sort akan mengulangi proses.i<6. demikian seterusnya. //ascending } } } Versi 2 void bubblesort2(){ for(i=1.j>=i.&data[j+1]). //descending } } } “The bubble sort is an easy algorithm to program. but it is slower than many other sorts” .i++){ for(int j=0.seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan.i++){ for(int j=n-1.j--){ if(data[j]<data[j-1]) tukar(&data[j].j<6-i.j++){ if(data[j]>data[j+1]) tukar(&data[j]. serta tercapai perurutan yang telah diinginkan. Contoh prosedur: Versi 1 void bubble_sort(){ for(int i=1.i<n. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan.&data[j-1]).

pada putaran kedua akan dicari data kedua terkecil. Misalnya untuk putaran pertama.i<n-1. Untuk setiap proses. dan akan ditempatkan di indeks kedua (data[1]). jika ditemukan data yang lebih kecil.6. maka akan .i).3.2. akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja.j++){ if(data[j] < data[pos]) pos = j. Pengurutan dimulai dari data ke-2 sampai dengan data terakhir. Contoh prosedur: void selection_sort(){ for(int i=0.i++){ pos = i. for(int j=i+1. Insertion Sort Mirip dengan cara orang mengurutkan kartu. } } 6. //ascending } if(pos != i) tukar(pos.j<n. pertukaran data secara fisik terjadi pada akhir proses. Selection Sort Merupakan kombinasi antara sorting dan searching. akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]). selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya. Selama proses.

00 1. } } 6.77 2.i<n. maka elemenelemen lain akan bergeser ke belakang. } data[j+1] = temp.i++){ temp = data[i].2 11.25 19.32 Data Descending 19.09 1.000 data pada komputer Pentium II 450 MHz Metode Bubble Sort Insertion Sort Selection Sort Waktu (detik) Data Acak 11.32 0. Tabel Perbandingan Kecepatan Metode Pengurutan Data Untuk data sejumlah 10. while(data[j]>temp && j>=0){ data[j+1] = data[j].77 .32 Data Ascending 1. j = i -1. j--. for(int i=1.4.ditempatkan (diinsert) diposisi yang seharusnya. Contoh prosedur: void insertion_sort(){ int temp. Pada penyisipan elemen.

html. [3] Munir. (2001). (2004).Institut Teknologi Bandung .Jurusan Teknik Informatika. David. InstitutTeknologi Bandung. (2006). Rinaldi. Inggriani. Diktat Kuliah IF2151 Matematika Diskrit.Departemen Teknik Informatika.http://cis.DAFTAR PUSTAKA [1] Carlson. Tanggal akses :2 Januari 2007 pukul 10:30 WIB [2] Liem.stvincent.edu/html/tutorials/swd/btree/btree. Diktat Struktur Data IF222 Kurikulum 1998.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->