Belajar Bahasa C : #13 Searching
Hallo
Sobat Ambisius!!
Pada
kesempatan kali ini, kita akan mulai mempelajari penggunaan Searching pada
bahasa C.
Searching
merupakan proses pencarian sebuah data yang diinginkan.
1.
Linear Search
Contoh program linear search :
#include <stdio.h>
int linearSearch(int data[],int datayangdicari){
//looping untuk mencari datanya
int bykdata;
for(int i= 0; i<bykdata;i++){
if(data[i]==datayangdicari)return i;
}
return -1;
}
int main (){
int data[4]={9,11,1,8}; //data
int indexSearch = linearSearch(data,1); //(data, angka yang dicari)
if(indexSearch == -1){
printf("Data tidak ditemukan dalam array\n");
}
else{
printf("Data %d ditemukan dalam array\n",data[indexSearch]);
}
return 0;
}
Penjelasan
:
·
Pada function linearSearch terdapat parameter
int data[], int data yangdicari yang nantinya digunakan untuk dipanggil ke
function main.
·
Karena linearSearch mencari data dengan
memeriksa array satu per satu maka dibutuhkan looping pada function
linearSearch.
·
Pada function main berfungsi memanggil function
linearSearch, mendeklarasikan data, dan melakukan seleksi apakah ada data yang
ingin dicari?.
Output
:
2.
Binary Search
Contoh program binary search (rekursif) :
#include <stdio.h> int binarySearch(int array[], int CariAngka, int left, int right) { if (right >= left) { int mid = left + (right - left) / 2; // Jika menemukan angka tengah maka return mid if (array[mid] == CariAngka) return mid; // Cari angka pada bagian kiri if (array[mid] > CariAngka) return binarySearch(array, CariAngka, left, mid - 1); // Cari angka pada bagian kanan return binarySearch(array, CariAngka, mid + 1, right); } return -1; } int main() { int array[] = {7, 11, 12, 23, 29, 32, 38}; int n = sizeof(array) / sizeof(array[0]); int CariAngka = 32; //angka yang ingin dicari int hasil = binarySearch(array, CariAngka, 0, n - 1); if (hasil == -1){ printf("Data tidak ditemukan\n"); } else{ printf("Angka %d ditemukan pada index %d\n", CariAngka, hasil); } return 0; }
Penjelasan
:
·
Pada function binarySearch terdapat parameter
int array[ ] yang berfungsi sebagai variabel data, int CariAngka berfungsi
sebagai variabel yang nantinya digunakan untuk mencari sebuah data, int left
dan int right berfungsi untuk mengeksekusi rumus dari teori binary search yaitu
memeriksa data dengan cara memeriksa nilai tengah.
·
Lalu pada function binarySearch terdapat
seleksi if untuk rumusan dan untuk mencari data yang diinginkan.
·
Pada function main tedapat variabel array[ ]
yang berisi beberapa data.
·
Terdapat variabel n yang berfungsi menyesuaikan
ukuran data pada array.
·
int CariAngka berfungsi berisi angka yang ingin
kita cari.
·
Int hasil merupakan variabel yang dibuat untuk
memanggil function binarySearch. Lalu lakukan seleksi apakah ditemukan angka
yang dicari?.
Output
:
Jika angka yang dicari tidak ada dalam data maka akan
muncul output :
Contoh program binary search (iteratif) :
#include<stdio.h>
int binaryIteratif(int data[],int n,int cari,int kiri,int kanan){
int mid,index=0;
while(kiri<=kanan){
mid=(kiri+kanan)/2;
if(cari==data[mid]){
return mid;
}
else if(cari>data[mid]){
kiri = mid+1;
}
else{
kanan = mid -1;
}
}
return -1;
}
int main(){
int data[100];
int n;
int cari;
int index;
int kiri,kanan;
printf("Masukkan banyaknya data : ");
scanf("%d",&n);
printf("Masukkan %d angka : ", n);
for(int i=0;i<n;i++){
scanf("%d",&data[i]);
}
printf("Masukkan angka yang ingin dicari: ");
scanf("%d",&cari);
kiri=0,kanan=n-1;
index=binaryIteratif(data,n,cari,kiri,kanan);
if(index==0){
printf("Data tidak ditemukan.\n");
}
else{
printf("Angka %d ditemukan pada index ke %d\n",cari,index);
}
return 0;
}
Penjelasan
:·
Perbedaan paling mencolok antara binary search
rekursif dan iteratif terletak pada function binarysearch dimana rekursif
memanggil diri sendiri untuk mengeksekusi angka yang dicari sedangkan iteratif
menggunakan looping untuk mengeksekusi angka yang dicari.
·
int n berfungsi sebagai banyaknya data yang
ingin dimasukkan.
·
Int kiri, kanan , mid berfungsi untuk mencari
angka yang di inginkan menggunakan rumus pada binary search.
·
Int data[100] berfungsi untuk memasukkan data.
·
Int cari berfungsi untuk memasukkan angka yang
ingin di cari.
Output
:
Jika data yang dicari tidak ditemukan :
Inilah informasi yang membahas tentang Searching pada bahasa C. Semoga dengan penjelasan tersebut dapat membuat Sobat Ambisius menjadi lebih semangat dalam mempelajari bahasa C. Terima kasih dan semoga bermanfaat.
0 Response to "Belajar Bahasa C : #13 Searching"
Post a Comment