Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

13.1. Pengertian Search. Secara umum search diartikan mencari data dengan cara menelusuri tempat penyimpanan data tersebut. Tempat penyimpanan data dalam.

Presentasi serupa


Presentasi berjudul: "13.1. Pengertian Search. Secara umum search diartikan mencari data dengan cara menelusuri tempat penyimpanan data tersebut. Tempat penyimpanan data dalam."— Transcript presentasi:

1 13.1. Pengertian Search. Secara umum search diartikan mencari data dengan cara menelusuri tempat penyimpanan data tersebut. Tempat penyimpanan data dalam memory dapat berupa array atau dapat juga dalam bentuk Linked List. Data juga dapat berada dalam external storage (umumnya hard disk) berupa suatu file. Searching adalah proses mencari atau pencarian. Dalam bab ini, data yang disearch adalah data yang berada berada dalam memory dalam bentuk array. Data yang berada dalam bentuk linear linked-list sudah dijelaskan pada bab yang bersangkutan. Demikian juga search pada data dalam bentuk non linear linked-list seperti pohon (tree) sudah dijelaskan pada bab mengenai pohon. Secara teori untuk data yang berada dalam array, ada beberapa cara searching atau proses pencarian antara lain : A. Sequential Search. B. Index Sequential Search C. Binary Search. D. Fibonacci Search E. Interpolation Search Sequential Search, sudah dibahas dalam buku pertama yaitu Algoritma dan Struktur Data 1. Yang akan dibahas dalam buku in hanyalah : Binary Search Fibonacci Search Interpolation Search Bab 13

2 Catatan : Karena isi array A[ ] merupakan nilai yang urut menaik, maka dapat dilakukan pencarian nilai yang sama dengan nilai N dengan cara BINARY SEARCH. Atau dengan perkataan lain, untuk dapat melakukan search secara BINARY SEARCH, maka data harus dalam keadaan urut Binary Search. Binary Search adalah pencarian sebuah elemen dalam sebuah array satu dimensi dengan cara selalu membandingkan dengan nilai yang berada di ‘tengah’ array tersebut. Bila tidak sama maka array dibagi dua dan pencarian diulang pada bagian dimana nilai yang dicari mungkin berada. Binary Search hanya bisa dilakukan pada array yang nilai-nilai elemennya sudah urut (sorted) baik urut menaik (ascending) atau urut menurut (descending). Contoh :Sudah ada array satu dimensi yang dibuat dengan int A[10]. Sudah ada isinya urut menaik sebagai berikut : n Susun algoritma untuk menginput sebuah nilai, (misal N) kemudian memeriksa dengan cara atau metoda Binary Search apakah ada isi array yang sama dengan nilai N. Bila ada cetak perkataan “ADA”, sedangkan bila tidak ada maka cetak perkataan “TIDAK ADA”. Contoh, untuk isi array yang diilustrasikan diatas. Bila diinput untuk N = 25, maka tercetak “ADA”. Bila diinput untuk N = 10, maka tercetak “TIDAK ADA” Jawab : scanf(“%i”, & N); Lo = 0; Hi = n-1; Flag = 0; while( Lo <= Hi && Flag == 0) { Mid = (Lo + Hi) / 2; if( N == A[Mid] ) Flag = 1; else { if(N < A[Mid]) Hi = Mid – 1; else Lo = Mid + 1; } if(Flag == 1 ) printf(“ADA” ); else printf(“TIDAK ADA” ); Keluar dari Loop bila Lo > Hi atau Flag != 0 dalam hal ini Flag = 1 Lo > Hi artinya TAK ADA isi array yang = N Flag = 1 artinya ADA isi array yang = N Kalau N < A[Mid] maka cari ke Kiri Dengan Lo tetap dan Hi = Mid - 1 Kalau N > A[Mid] maka cari ke Kanan dengan Hi tetap dan Lo = Mid + 1 a. b. 368 Soal

3 Konsep Binary Search. Selalu mencari ‘titik tengah’, dari suatu bagian array, dan membandingkan nilainya dengan N, dengan urutan sebagai berikut : 1.Inputkan N. Tentukan Lo = 0; Hi = n-1; dan Flag = 0 (tanda tidak ditemukan) n Lo Mid Hi Mid = ( Lo + Hi ) / 2 Ketiga proses diatas, secara skema dapat digambarkan sebagai berikut : INPUT(N) Lo = 0; Hi = n-1; Flag = 0; Keluar dari loop bila Lo > Hi OR Flag == 1 Mid = (Lo+Hi) Div 2 N == A[Mid] N < A[Mid] N > A[Mid] Cari Kekiri : Hi = Mid -1 Cari Kekanan Lo = Mid While Lo <= Hi AND Flag == 0 Ditemukan Flag = 1 3. Flag == 1 Flag ==  0 Cetak “ADA” Cetak : “TIDAK ADA” Sehingga digunakan : while( Lo<=Hi && Flag==0 ) SELESAI 2. a. Selama Lo <= Hi dan Flag == 0 Hitung Mid = (Lo + Hi ) / 2 - Bila N == A[Mid ], Isi Flag = 1; (Tanda ditemukan), kembali ke no. 2 - Bila N < A[Mid], Isi Hi = Mid –1, dan proses pencarian di Bagian Kiri, kembali ke no. 2 - Bila N > A[Mid], Isi Lo = Mid + 1, dan proses pencarian di Bagian Kanan, kembali ke no. 2 b. Bila Lo > Hi, atau Flag == 1, pergi ke no 3. 3.Proses pencarian selesai. Mencetak “ADA” bila Flag == 1, atau “TIDAK ADA” bila Flag tetap == 0 369

4 Pohon Binary Search. Konsep pencarian yang selalu membagi dua bidang yang dicari, lebih mudah bila digambarkan dengan pohon biner, yang biasa disebut Pohon Binary Search, yang dapat digambarkan sebagai berikut : n Untuk data dalam array sebagai berikut : Dapat direpresentasikan menjadi pohon biner (Binary Search) sebagai berikut: Dari pohon Binary Search ini, dapat dengan mudah dilihat : 1.Nilai 1 7 akan ditemukan pada langkah pertama. 2.Nilai 7 atau nilai 25 akan ditemukan pada langkah ke-2 3.Nilai 5, atau 12, atau 19, atau 27 akan ditemukan pada langkah ke-3. 4.Nilai 15, atau 22, atau 32 akan ditemukan pada langkah ke-4. Jadi langkah yang paling panjang adalah 4. Apabila penelusuran, sampai pada NULL-LINK, berarti data Tidak Ditemukan. Contoh : Bila penelusuran sampai pada NULL-LINK no : 1.Berarti nilai dibawah 5 tidak ditemukan 2.Berarti nilai diatas 5 tapi dibawah 7, tidak ditemukan. 3.Berarti nilai dibawah 12 tapi diatas 7, tidak ditemukan 4.Berarti nilai dibawah 15 tapi diatas 12, tidak ditemukan 5.Berarti nilai diatas 15 tapi dibawah 17, tidak ditemukan 6.Berarti nilai dibawah 19 tapi diatas 17, tidak ditemukan 7.Berarti nilai dibawah 22 tapi diatas 19, tidak ditemukan 8.Berarti nilai diatas 22 tapi dibawah 25, tidak ditemukan 9.Berarti nilai dibawah 27 tapi diatas 25, tidak ditemukan 10.Berarti nilai dibawah 32 tapi diatas 27, tidak ditemukan 11.Berarti nilai diatas 32 tidak ditemukan Akar Nomor elemen Isi elemen Terlihat :Ada 10 buah simpul. ( sampai ) dimana simpul sebagai akar Ada 11 buah NULL-LINK, ( ), dari

5 Langkah ke II N dibandingkan dengan A[7] Langkah ke III N dibandingkan dengan A[5] > sama A [ ] Langkah ke I N dibandingkan dengan A[4] LoHi LoMidHi MidHiLo Mid HiLo Contoh : Misal diinput N = 19 N 19 Langkah-II a. Hitung Mid Mid = (Lo + Hi) / 2 = (5 + 9) / 2 = 7 A[Mid] = A[7] = 25 b. Periksa nilai N N Hi = Mid - 1 = = 6 sedangkan Lo tetap = 5 Lo Lanjutkan ke langkah-III Langkah-I. a. Hitung Mid Mid = (Lo + Hi) / 2 = (0 + 9) / 2 = 4 A[Mid] = A[4] = 17 b. Periksa nilai N N > A[Mid] -----> Lo = Mid + 1 = = 5 sedangkan Hi tetap = 9 Lo lanjutkan ke langkah-II. Set nilai awal Lo dan Hi. Lo = 0 Hi = 9 Lo masuk ke langkah-I. Langkah-III a.. Hitung Mid Mid = (Lo + Hi) / 2 = (5 + 6) / 2 = 5 A[Mid] = A[5] = 19 b. Periksa nilai N N = A[Mid] > ditemukan isi array yang nilainya = N Ditemukan pada langkah ke

6 Langkah ke II N dibandingkan dengan A[7] Langkah ke III N dibandingkan dengan A[5] > tidak sama ( > ) A [ ] Langkah ke I N dibandingkan dengan A[4] LoHi LoMidHi MidHiLo Mid HiLo Contoh : Misal diinput N = 20 N 20 Langkah-II a. Hitung Mid Mid = (Lo + Hi) / 2 = (5 + 9) / 2 = 7 A[Mid] = A[7] = 25 b. Periksa nilai N N Hi = Mid - 1 = = 6 sedangkan Lo tetap = 5 Lo Lanjutkan ke langkah-III Langkah-I. a. Hitung Mid Mid = (Lo + Hi) / 2 = (0 + 9) / 2 = 4 A[Mid] = A[4] = 17 b. Periksa nilai N N > A[Mid] -----> Lo = Mid + 1 = = 5 sedangkan Hi tetap = 9 Lo lanjutkan ke langkah-II. Set nilai awal Lo dan Hi. Lo = 0 Hi = 9 Lo masuk ke langkah-I. Langkah-III a.. Hitung Mid Mid = (Lo + Hi) / 2 = (5 + 6) / 2 = 5 A[Mid] = A[5] = 19 b. Periksa nilai N N > A[Mid] > Lo = Mid + 1 = = 6 sedangkan Hi tetap = 6 Lo <= Hi  Lanjutkan ke Langkah-IV 372

7 Langkah-IV a.. Hitung Mid Mid = (Lo + Hi) / 2 = (6 + 6) / 2 = 6 A[Mid] = A[6] = 22 b. Periksa nilai N N Hi = Mid - 1 = 6 – 1 = 5 sedangkan Hi tetap = 6 Lo > Hi  Tidak Ditemukan Sampai Langkah IV dipastikan nilai 20 Tidak Ditemukan 5 6 Mid HiLo HiLo 6 Mid Hi Lo Contoh Soal – 1 : Tunjukkkan dengan tabel, “Ditemukan pada langkah ke berapa “ nilai yang diinput dari luar (misal N) ditemukan atau tidak ditemukan untuk data dan algoritma yang dicontohkan sebalumnya, bila data yang diinput : a. 19 b. 25 c. 20 d. 17 I II III > < = 19 LangkahLoHi Kondisi Lo & Hi Lo Mid Kondisi N & A[Mid] Hi Lo <= Hi Lo <= Hi Lo <= Hi A[Mid] Ditemukan pada Langkah -III nilai N = isi array Tabel : Bandingkan dengan sequential search, untuk N = 19 akan ditemukan pada Langkah-5 Jawab – a. N = n Akar

8 I II Lo <= Hi Lo <= Hi > = 25 LangkahLoHi Kondisi Lo & Hi Lo Mid Kondisi N & A[Mid] HiA[Mid] 59 Ditemukan pada Langkah -II nilai N = isi array Bandingkan dengan sequential search, untuk N = 25 akan ditemukan pada Langkah-7 Jawab – b. N = 25. LangkahLoHi Kondisi Lo & Hi Lo Mid Kondisi N & A[Mid] Hi I II III IV V Lo <= Hi Lo <= Hi Lo <= Hi Lo <= Hi lo > Hi A[Mid] > < > < Lo > Hi ---> Nilai 20 Tidak ditemukan Pada langkah ke-V sudah dapat diketahui nilai 20 tidak ditemukan dalam array Bandingkan dengan sequential search, untuk N = 20 baru diketahui tidak ditemukan pada langkah ke 10 Jawab – c. N = n LangkahLoHi Kondisi Lo & Hi Lo Mid Kondisi N & A[Mid] Hi I09Lo <= Hi A[Mid] = 1759 Jawab – d. N = 17. Ditemukan pada Langkah - I nilai N = isi array Akar

9 Cara-1. Tidak menggunakan Function. Contoh Soal- 2. Susun algoritma Binary Search dengan mengambil contoh dataseperti pada pada Soal-1. Jawab : //Binsrch1 //Binary Search, //Tidak menggunakan function #include #define n 10 void main() { int N; int A[n]={5,7,12,15,17, 19,22,25,27,32}; int i,lo,hi,Mid,Flag; scanf("%i", &N); lo=0; hi=n-1; Flag=0; while(lo <= hi && Flag==0) { Mid=(lo+hi)/2; if(N==A[Mid]) Flag=1; else if(N

10 Cara-3. Menggunakan Function. Tanpa pointer Semua variabel Global Tidak recursive //Binsrch3 //Binary Search, pakai function, //Tapitidak pakai pointer //Semua variabel Global //Laporan dicetak dalam funtion #include #define n 10 int lo, hi, Mid, Flag; int N; int A[n]={5,7,12,15,17, 19,22,25,27,32}; void BinSearch( ) { lo=0; hi=n-1; Flag=0; while(lo <= hi && Flag==0) { Mid=(lo+hi)/2; if(N==A[Mid]) Flag=1; else if(N

11 //Binsrch5 //Binary Search, pakai function //Function recursive //tidak pakai pointer //Data Global #include #define n 10 int A[n]={5,7,12,15,17, 19,22,25,27,32}; int BinSearch(int N, int lo, int hi) { int mid; if(lo > hi ) return(-1); else { mid=(lo+hi)/2; if(N==A[mid]) return(mid); else { if(N hi ) return(-1); else { mid=(lo+hi)/2; if(N==A[mid]) return(mid); else {if(N hi ) return(-1); else {mid=(lo+hi)/2; return(N==A[mid]? mid : N


Download ppt "13.1. Pengertian Search. Secara umum search diartikan mencari data dengan cara menelusuri tempat penyimpanan data tersebut. Tempat penyimpanan data dalam."

Presentasi serupa


Iklan oleh Google