110 likes | 294 Views
SEARCHING ARRAY. Searching. Searching adalah pencarian data dengan cara menelusuri data-data tersebut . Tempat pencarian data dapat berupa array dalam memori , bisa juga pada file pada external storage. Sequential Search.
E N D
Searching • Searching adalahpencarian data dengancaramenelusuri data-data tersebut. • Tempatpencarian data dapatberupa array dalammemori, bisajugapada file pada external storage.
Sequential Search Adalahteknikpencarian data dalam array ( 1 dimensi ) yang akanmenelusurisemuaelemen-elemen array dariawalsampaiakhir, dimana data-data tidakperludiurutkanterlebihdahulu. Kemungkinanterbaik (best case) adalahjika data yang dicariterletakdiindeks array terdepan (elemen array pertama) sehinggawaktu yang dibutuhkanuntukpencarian data sangatsebentar (minimal). Kemungkinanterburuk (worst case) adalahjika data yang dicariterletakdiindeks array terakhir (elemen array terakhir) sehinggawaktu yang dibutuhkanuntukpencarian data sangat lama (maksimal).
Sequential Search (2) 0 1 2 3 4 5 6 7 indeks 8 10 6 2 10 7 1 100 value Misalnyaterdapat array satudimensisebagaiberikut: Kemudian program akanmeminta data yang akandicari, misalnya 6. Jikaadamakaakanditampilkantulisan “ADA”, sedangkanjikatidakadamakaakanditampilkantulisan “TIDAK ADA”.
Detail Program #include <stdio.h> #include <conio.h> void main(){ clrscr(); int data[8] = {8,10,6,2,10,7,1,100}; intcari; intket=0; printf("masukkan data yang ingindicari = "); scanf("%d",&cari); for(inti=0;i<8;i++){ if(data[i] == cari) ket=1; } if(ket==1) printf("Data ada!\n"); else printf("Data tidakada!\n"); }
Keterangan Program • dilakukanperulanganuntukmengaksessemuaelemen array data satupersatuberdasarkanindeksnya. • menggunakanvariabel“ket” yang bergunauntukmenadaiadaatautidaknya data yang dicaridalam array data. Hanyabernilai 0 atau 1. • “ket” pertamadiinisialiasasidengannilai 0. • Jikaditemukan, maka“ket” akandisetmenjadi 1, jikatidakadamaka“ket” akantetapbernilai 0. • Semuaelemen array data akandibandingkansatupersatudengan data yang dicaridandiinputkanoleh user.
Binary Search • teknikpencarian data dengancaramembagi data menjadiduabagiansetiap kali terjadiprosespengurutan. • SYARAT: “Data harusdiurutkanterlebihdahuluberdasarkansuatuurutantertentu yang dijadikankuncipencarian.” • Prinsippencarianbineradalah: • Data diambildariposisi 1 sampaiposisiakhir N • Kemudiancariposisi data tengahdenganrumus (posisiawal + posisiakhir) / 2 • Kemudiandata yang dicaridibandingkandengan data yang ditengah, apakahsamaataulebihkecil, ataulebihbesar? • Jikalebihbesar, makaprosespencariandicaridenganposisiawaladalahposisitengah + 1 • Jikalebihkecil, makaprosespencariandicaridenganposisiakhiradalahposisitengah – 1 • Jika data sama, berartiketemu.
Binary Search Contoh Data: Misalnya data yang dicari17 0 1 2 3 4 5 6 7 8 1 81013 15 17 203040 A B C Karena 17 > 15 (data tengah), maka: awal = tengah + 1 0 1 2 3 4 5 6 7 8 1 8 10 13 15 17 20 30 40 A B C Karena 17 < 20 (data tengah), maka: akhir = tengah – 1 0 1 2 3 4 5 6 7 8 1 8 10 13 15 17 20 30 40 A=B=C Karena 17 = 17 (data tengah), maka KETEMU!
Interpolation Search • dilakukanpada data yang sudahterurutberdasarkankuncitertentu • dilakukandenganperkiraanletak data. • Contoh: • jikakitahendakmencarisuatunamadidalambukutelepon, • misalyang berawalandenganhuruf W, makakitatidakakanmencarinyadariawalbuku, tapikitalangsungmembukanyapada 2/3 atau ¾ daritebalbuku. • Jadikitamencari data secararelatifterhadapjumlah data. • Rumusposisirelatifkuncipencariandihitungdenganrumus:
InterpolasiSearch Kasus: misalkanterdapat data sbb:
InterpolasiSearch Kasus #1: • KunciPencarian? 088 • Low? 0 • High? 8 • Posisi = int((088 - 025) / (096 - 025) * (8 - 0) + 0) = [7] • Kode[7] = kuncipencarian, data ditemukan: Visual Basic 2005 Express Kasus #2: • KunciPencarian? 060 • Low? 0 • High? 8 • Posisi = int((060 – 025) / (096 – 025) * (8 – 0) + 0) = [3] • Kunci[3] < kuncipencarian, makateruskan • Low = 3 + 1 = 4 • High = 8 • Posisi = int((060 – 025) / (096 – 025) * (8 – 4) + 4) = [5] • Ternyata Kunci[5] adalah 063 yang lebih besar daripada 060. • Berartitidakadakode060.