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

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

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

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

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

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

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

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

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

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

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

. dan faktor cabang pohon sangat tinggi sehingga pohon dengan ketinggian kecil dapat menyimpan kunci dalam jumlah yang sangat besar. Sebuah B-Tree didesain untukdigunakan pada disk. Sebuah Btree menyimpan banyak kunci di setap simpulnya sehingga dapat mengakses banyak kunci. 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.

BAB II SEARCHING 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).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. Tempat pencarian data tersebut dapat berupa array dalam memori. dimana data-data tidak perlu diurutkan terlebih dahulu. 5. Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching. 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). Misalnya terdapat array satu dimensi sebagai berikut: .

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful