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.

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

1. S. penyeimbangan muncul tidak terlalu sering. 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. nama penciptanya. Secara terpisah. Biasanya nilai ini diset agar setiap simpul mengisi sebuah blok penuh atau pada ukuran yang analog di tempat penyimpanan sekunder. Cole. atau Boeing karena mereka bekerja di Boeing Scientific Research Labs pada waktu itu.Bayer dan E. Chiat. Hal ini biasanya muncul ketika kebanyakan simpul berada di penyimpanan sekunder seperti hard drives. dan yang lainnya mengembangkan sistem yang mirip di Control Data Corporation (bekerja sama dengan Unversitas Stanford). H. Yang paling diyakini adalah B merupakan singkatan dari balanced yang artinya seimbang. Para pencipta B-Tree. B juga dapat berarti Bayer. .Tujuannya yaitu untuk mendapatkan akses pada data yang cepat. Schwartz.disk untuk mengambil data.1 Sejarah B-Tree B-tree memiliki sejarah yang pendek tetapi penting. dan efisiensi meningkat. M. Radcliffe. R. Dengan memaksimalkan jumlah simpul anak pada setiap simpul internal. 1. tidak menjelaskan arti dari huruf B pada B-Tree tersebut. B. M.1 Sejarah B-Tree B-Tree memiliki kelebihan dibanding implementasi alternatif yang lain karena waktu akses dalam simpulnya jauh di atas waktu akses antarsimpul. 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. Di Sperry Univac Corporation (bekerja sama dengan Universitas Case Western Reserve). ketinggian pohonN berkurang. Rudolf Bayer dan Ed McCreight. Kemudian pada tahun 1972. karena semua simpul daun pada pohon berada pada tingkat (level) yang sama. Kaufman. 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. Mereka menamakan metode tersebut dengan Btree.

Ini adalah struktur yang baik jika pohon digunakan pada memori yang lambat.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. Akar pohon B-tree paling sedikit memiliki 2 simpul anak. Setiap elemen simpul internal adalah nilai-nilai yang berbeda yang membagi subpohonnya.1 Struktur Simpul B-Tree Tidak seperti pohon biner. Balanced tree atau pohon seimbang adalah pohon dimana tidak ada simpul daun yang lebih panjang terhadap daun yang lain. Sebuah B-Tree didesain untuk digunakan padadisk. Kunci disimpan dalam urutan membesar. karena ketinggian dan jumlah akses dapat diperkecil dengan mengambil bilangan m yang besar. Disk hanya dapat membaca dan menulis blok data ukuran. dan diambil dengan jaminan proses dengan waktu terburuk. di mana setiap simpulnya terdiri dari (m/2) sampai m buah simpul anak. m adalah orde. 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. 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. dihapus. di mana m > 1 merupakan bilangan bulat. tetap (berukuran bsar) sekaligus. Search tree adalah pohon dimana setiap subpohon dari sebuah simpul mempunyai kunci lebih kecil dari subpohon kanan simpul tersebut. yang dapat diakses hanya dengan beberapa operasi. Sebuah simpul juga mempunyai . 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. Sebuah B-tree menyimpan banyak kunci di setap simpulnya sehingga1) sebuah disk dapat mengakses anyak kunci.1. setiap simpul pada B-tree dapat memiliki sejumlah variabel kunci dan anak. Setiap kunci memiliki anak yang berhubungan dengan kunci tersebut.

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

2. insert. 2. B-tree cenderung memiliki tinggi yang lebih kecil dari pohon lain yang memiliki tinggi asimtotik yang sama. .2 Ketinggian pada B-Tree Untuk n lebih besar atau sama dengan satu.dengan tinggi h dan derajat minimum t lebih besar atau sama dengan 2. Tinggi dari kasus terburuk adalah O(logn).Walaupun hal ini tidak mempengaruhi tinggi asimtotik kasus terburuk. Karena percabangan dari B-tree bisa lebih besar dibandingkan struktur pohon seimbang yang lain. Dibandingkan dengan pohon seimbang lain. Sehingga jumlah simpul yang dikunjungi selama pencarian cenderung lebih kecil dari yang dibutuhkan oleh struktur pohon yang lain. dan delete bertambah sesuai ketinggian pohon.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. pertambahan pada B-tree leih lambat dibandingakan jumlah elemen. basis dari logaritma cenderung lebih besar. struktur khusus untuk simpul daun pada B-tree akan meningkatakan performa. tetapi waktu yang dibutuhkan untuk melakukan operasi search. sejak simpul daun tidak memiliki anak. 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. Bagaimanapun.sama pada setiap simpul. ketinggian dari n-kunci B-tree .

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

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

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

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

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

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

data yang tidak terurut terdiri dari n nilai kunci memiliki alternatif yang lain karena waktu akses dalam simpulnya cepat. Sebuah B-Tree didesain untukdigunakan pada disk. 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. Salah satu penerapan struktur data B-tree adalah database atau basis data.

bias juga pada file pada external storage. 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). Misalnya terdapat array satu dimensi sebagai berikut: . 5.BAB II SEARCHING 5. 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).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. Tempat pencarian data tersebut dapat berupa array dalam memori. 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. dimana data-data tidak perlu diurutkan terlebih dahulu.

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful