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

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

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

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

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

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

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

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

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

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

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

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. . Sebuah B-Tree didesain untukdigunakan pada disk. dan faktor cabang pohon sangat tinggi sehingga pohon dengan ketinggian kecil dapat menyimpan kunci dalam jumlah yang sangat besar.data yang tidak terurut terdiri dari n nilai kunci memiliki alternatif yang lain karena waktu akses dalam simpulnya cepat. yang dapat diakses hanya dengan beberapa operasi.

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful