SEQUENTIAL SEARCH
·
Proses
pencarian membandingkan nilai Kunci dengan semua elemen nilai.
·
Membandingkan
nilai Kunci dengan elemen pertama sampai elemen terakhir.
·
Proses
terhenti jika nilai kunci cocok dengan nilai elemen tanpa harus membandingkan
semua elemen.
·
Sequential
Search – Case 1
Tabel A[0..n]
Proses
pencarian berhenti jika nilai kunci cocok dengan nilai elemen tanpa harus
membandingkan semua elemen
Deklarasikan
fungsi-fungsi di bawah ini ke dalam header.h, serta buat realisasi
fungsi tersebut pada file fungsi.c, kemudian buat uji cobalah semua fungsi dengan membuat
program pemanggil pada file main.c.
Þ
int sequent_search(int angka, int
data[], int jml_data)
Fungsi ini akan mengembalikan nilai
true jika nilai yang dicari melalui parameter angka ada pada parameter data,
dan akan mengembalikan nilai false jika angka tidak ditemukan. Algoritma
pencarian yang digunakan adalah sequential search.
Contoh :
Þ
int is_inverse(int list1[], int list2[],
int jml_data)
Fungsi ini akan mengembalikan nilai
true jika array parameter list1 merupakan kebalikan dari array pada parameter
list2.
Contoh :
Þ
void min_max(int data[], int jml_data,
int *min, int *max)
Fungsi ini akan mengirimkan minimum
dan maksimum dari sebuah list data yang diberikan pada parameter. Nilai minimum
akan dikirimkan pada parameter *min, dan nilai maksimum akan dikirimkan pada
parameter *max.
Contoh :
Þ
int min_max_gap(int data[], int
jml_data)
Fungsi ini akan mengembalikan gap
(jarak) antara nilai minimal dan nilai maksimal yang ada pada list parameter data.
Contoh :
Þ
int at_least(char huruf, int jml, char
teks[])
Fungsi ini akan mengembalikan nilai
true jika di dalam parameter teks terdapat karakter huruf minimal sebanyak
nilai pada parameter jml, dan akan mengembalikan nilai false jika tidak sampai
sebanyak nilai pada parameter jml.
Contoh :
Untuk mendeklarasi menggunakan fungsi-fungsi diatas kita akan menggunakan
program seperti di bawah ini , tentunya kita harus membuat project dengan 3
file yaitu header.h, fungsi.c dan main.c :
1.
Bagian header.h
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
#define false 0
#define boolean unsigned char
int sequent_search(int angka,int data[]);
int is_inverse(int list1[],int list2[]);
void min_max(int data[],int *min, int *max);
int min_max_gap(int data[]);
int at_least(char huruf, int jml,char teks[]);
void konversi_karakter(char text[100]);
char temp[100];
int temp2[100];
#endif // HEADER_H_INCLUDED
2.
Bagian fungsi.c
#include "header.h"
int sequent_search(int angka,int data[])
{
int i;
for(i=0;i<9-1;i++)
{
if(data[i]==angka)
{
return true;
break;
}
}
return false;
}
int is_inverse(int list1[],int list2[])
{
int i;
int static j=0;
boolean
lebih_besar1=false,lebih_besar2=false,lebih_kecil1=false,lebih_kecil2=false,cek=false;
if(list1[j]<list1[j+1])
{
lebih_besar1=true;
for(i=0;i<5-1;i++)
{
if(list1[i]>list1[i+1])
{
lebih_besar1=false;
break;
}
}
}
else if(list1[j]>list1[j+1])
{
lebih_kecil1=true;
for(i=0;i<5-1;i++)
{
if(list1[i]<list1[i+1])
{
lebih_kecil1=false;
break;
}
}
}
if(list2[j]<list2[j+1])
{
lebih_besar2=true;
for(i=0;i<5-1;i++)
{
if(list2[i]>list2[i+1])
{
lebih_besar2=false;
break;
}
}
}
else if(list2[j]>list2[j+1])
{
lebih_kecil2=true;
for(i=0;i<5-1;i++)
{
if(list2[i]<list2[i+1])
{
lebih_kecil2=false;
break;
}
}
}
if(lebih_besar1==true&&lebih_kecil2==true)
{
cek=true;
}
else
if(lebih_kecil1==true&&lebih_besar2==true)
{
cek=true;
}
else
{
cek=false;
}
return cek;
}
void min_max(int data[],int *min, int *max)
{
int i;
*min=data[0];
*max=data[0];
for(i=1;i<6&&data[i]!='\0';i++)
{
if(data[i]<*min)
{
*min=data[i];
}
else if(data[i]>*max)
{
*max=data[i];
}
}
}
int min_max_gap(int data[])
{
int min,max;
min_max(data,&min,&max);
return max-min;
}
int at_least(char huruf, int jml,char teks[])
{
int i,hitung=0;
strcpy(temp,teks);
strlwr(temp);
for(i=0;temp[i]!='\0';i++)
{
if(temp[i]==huruf)
{
hitung++;
}
}
if(hitung==jml)
{
return true;
}
else
{
return false;
}
}
3.
Bagian main.c
#include "header.h"
int main()
{
puts("==============================================");
puts("\t\tSequent
Search");
puts("==============================================");
int data[] = {12, 14, 20, 15,
22, 25, 18, 10, 27};
printf("Sequent Search 15
?%s\n",sequent_search(15, data) ?" ""True":"
""False");
printf("Sequent Search 25
?%s\n",sequent_search(25, data) ?" ""True":"
""False");
printf("Sequent Search 39
?%s\n",sequent_search(39, data) ?" ""True":"
""False");
printf("Sequent Search 17
?%s\n",sequent_search(17, data) ?" ""True":"
""False");
puts("\n==============================================");
puts("\t\tIs
Inverse");
puts("==============================================");
int list1[] = {1, 2, 3, 4, 5};
int list2[] = {5, 4, 3, 2, 1};
int list3[] = {6, 7, 8, 9, 10};
printf("is_inverse List 1
& List 2 ?%s\n",is_inverse(list1, list2) ?"
""True":" ""False");
printf("is_inverse List 2
& List 3 ?%s\n",is_inverse(list2, list3) ?"
""True":" ""False");
printf("is_inverse List 1
& List 3 ?%s\n",is_inverse(list1, list3) ?"
""True":" ""False");
printf("is_inverse List 2
& List 2 ?%s\n",is_inverse(list2, list2) ?"
""True":" ""False");
puts("\n==============================================");
puts("\t\tMin Max");
puts("==============================================");
int list11[] = {9, 12, 43, 13,
15};
int list12[] = {12, 4, 19, 9, 22, 1};
int list13[] = {8, 21, 29, 17,
20, 13};
int list14[] = {18, 11, 19, 25,
31, 15};
int a,b;
min_max(list11, &a,
&b);
printf("Min = %d ,Max =
%d\n",a,b);
min_max(list12, &a,
&b);
printf("Min = %d ,Max =
%d\n",a,b);
min_max(list13, &a,
&b);
printf("Min = %d ,Max =
%d\n",a,b);
min_max(list14, &a,
&b);
printf("Min = %d ,Max =
%d\n",a,b);
puts("\n==============================================");
puts("\t\tMin Max
GAP");
puts("==============================================");
printf("min_max_gap List11
%d\n",min_max_gap(list11));
printf("min_max_gap List12
%d\n",min_max_gap(list12));
printf("min_max_gap List13
%d\n",min_max_gap(list13));
printf("min_max_gap List14
%d\n",min_max_gap(list14));
puts("\n==============================================");
puts("\t\tAt Least");
puts("==============================================");
printf("\n");
printf("at_least 1 ?%s\n",at_least('r',
3, "Larry Page")?" ""True":"
""False");
printf("at_least 2
?%s\n",at_least('m', 2, "Matt Mullenweg")?"
""True":" ""False");
printf("at_least 3
?%s\n",at_least('a', 2, "Mark Zuckerberg")?"
""True":" ""False");
printf("at_least 4 ?%s\n",at_least('m',
2, "Jimmy Wales")?" ""True":"
""False");
return 0;
}
4.
Setelah itu kita build dan run program tersebut
, dan hasilnya :
Tidak ada komentar:
Posting Komentar