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.

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

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

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

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

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

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. 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. create.X tidak ada pada pohon Diberikan sebuah simpul W dala pohon T. Karena B-tree berusaha melakukan akses disk seminimum mungkin dan simpul-simpul biasanya disimpan pada disk.Karena setiap simpul cenderung memiliki faktor percabangan yang besar (jumlah anak yang besar). Pilihan ini memudahkan dan mengoptimumkan akses disk. Dua kali pass yang lebih sederhana pada pohon untuk mempesbaiki pelanggaran mungkin terjadi. dan insert ditunjukkan di bawah. Algoritma-algoritma di bawah diasumsikan bahwa semua simpul yang . Kasus terburuk : . pass sekali ini akan mengurangi jumlah kunjungan pada simpul dan jumlah akses disk. Faktor minimalisasi biasanya dipilih agar ukuran total setiap simpul berkorespondensi pada sebuah ukuran blok yang banyak pada sebuah alat penyimpanan. Perlu diperhatikan bahwa algoritma-algoritma ini hanya sekali pass. 3 Algoritma B-Tree Algoritma untuk operasi search. semua referensi pada simpul yang diberikan sebelumnya dengan melakukan operasi read dilambangkan dengan Disk-Read.K = t-1 untuk semua simpul . Sama halnya. simpul harus eitulis pada tempat penyimpanan sekunder dengan operasi write dilambangkan dengan Disk-Write. Karena semua simpul diasumsikan disimpan pada tempat penyimpanan sekunder (disk) daripada tempat peyimpanan primer (memori). Oleh karena itu. apabila sebuah simpul dimodifikasi dan tidak lagi diperlukan. 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. algoritma tersebut tidak menelusuri pohon kembali. Jika akses ke setiap simpul memerlukan disk access. Dengan kata lain.

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

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

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

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

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

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

dimana data-data tidak perlu diurutkan terlebih dahulu.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. 5. Pengertian Searching Searching adalah pencarian data dengan menelusuri tempat pencarian data tersebut. Misalnya terdapat array satu dimensi sebagai berikut: . Tempat pencarian data tersebut dapat berupa array dalam memori. 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). bias juga pada file pada external storage. Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching.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).

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

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

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

BAB III SORTING 6. sehingga tersusun secara teratur menurut aturan tertentu. 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. Algoritma ini . seperti gelembung yang keluar dari sebuah gelas bersoda.1.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. Pengurutan dapat dilakukan secara ascending dan descending. merge sort • Pengurutan berkurang menurun (diminishing increment sort method) • Shell sort 6. exchange sort • Pengurutan berdasarkan prioritas (priority queue sorting method) • Selection sort. tree sort • Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method) • Quick sort. Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak / berpindah ke posisinya yang tepat. Bubble Sort Buble Sort merupakan metode sorting termudah.

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

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

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

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

Sign up to vote on this title
UsefulNot useful