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.

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

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

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

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

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

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

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

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

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

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

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

yang dapat diakses hanya dengan beberapa operasi. 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. . 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. bias juga pada file pada external storage.BAB II SEARCHING 5. Tempat pencarian data tersebut dapat berupa array dalam memori.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. 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). Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching. Misalnya terdapat array satu dimensi sebagai berikut: . Pengertian Searching Searching adalah pencarian data dengan menelusuri tempat pencarian data tersebut.

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

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

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

Pengurutan data dalam struktur data sangat penting untuk data yang bertipe data numerik ataupun karakter. 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. sehingga tersusun secara teratur menurut aturan tertentu.BAB III SORTING 6. Bubble Sort Buble Sort merupakan metode sorting termudah. 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. Algoritma ini . heap sort • Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method) • Insertion sort. exchange sort • Pengurutan berdasarkan prioritas (priority queue sorting method) • Selection sort.1. seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. tree sort • Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method) • Quick sort.

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

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

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

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

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.