laporan algoritma dan struktur data modul 3

36
SEARCHING (PENCARIAN) Tujuan Umum 1. Mahasiswa mampu melakukan perancangan aplikasi menggunakan Struktur Searching (Pencarian). 2. Mahasiswa mampu melakukan analisis pada algoritma Searching yang dibuat. 3. Mahasiswa mampu mengimplementasikan algoritma Searching pada sebuah aplikasi secara tepat dan efisien Tujuan Khusus 1. Mahasiswa mampu menjelaskan mengenai algoritma Searching. 2. Mahasiswa mampu membuat dan mendeklarasikan struktur algoritma Searching. 3. Mahasiswa mampu menerapkan dan mengimplementasikan algoritma Searching. DASAR TEORI Sequential Search (Linear Search) Sequential Search adalah teknik pencarian data dimana data dicari secara urut dari depan ke belakang atau dari awal sampai akhir. Kelebihan dari proses pencarian secara sequential ini jika data yang dicari terletak didepan, maka data akan ditemukan dengan cepat. Tetapi dibalik kelebihannya ini, teknik ini juga memiliki kekurangan. Pertama, jika data yang dicari terletak dibelakang atau paling akhir, maka akan membutuhkan waktu yang lama dalam proses pencariannya. Kedua, beban komputer akan semakin bertambah jika jumlah data dalam array sangat banyak. Disini IT Programmer akan memberikan contoh sintaks dari Sequential Search dalam C++. Tidak ada penginputan data oleh user dalam program ini, karena data telah dideklarasikan terlebih

Upload: universitasnegerimalang

Post on 04-Mar-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

SEARCHING (PENCARIAN)

Tujuan Umum1. Mahasiswa mampu melakukan perancangan aplikasi

menggunakan Struktur Searching (Pencarian).

2. Mahasiswa mampu melakukan analisis pada algoritma

Searching yang dibuat.

3. Mahasiswa mampu mengimplementasikan algoritma Searching

pada sebuah aplikasi secara tepat dan efisien

Tujuan Khusus1. Mahasiswa mampu menjelaskan mengenai algoritma Searching.

2. Mahasiswa mampu membuat dan mendeklarasikan struktur

algoritma Searching.

3. Mahasiswa mampu menerapkan dan mengimplementasikan

algoritma Searching.

DASAR TEORI

Sequential Search (Linear Search)Sequential Search adalah teknik pencarian data dimana

data dicari secara urut dari depan ke belakang atau dari

awal sampai akhir. Kelebihan dari proses pencarian secara

sequential ini jika data yang dicari terletak didepan, maka

data akan ditemukan dengan cepat. Tetapi dibalik

kelebihannya ini, teknik ini juga memiliki kekurangan.

Pertama, jika data yang dicari terletak dibelakang atau

paling akhir, maka akan membutuhkan waktu yang lama dalam

proses pencariannya. Kedua, beban komputer akan semakin

bertambah jika jumlah data dalam array sangat banyak. Disini

IT Programmer akan memberikan contoh sintaks dari Sequential

Search dalam C++. Tidak ada penginputan data oleh user dalam

program ini, karena data telah dideklarasikan terlebih

dahulu. Kalian dapat mengubahnya sendiri jika kalian telah

lebih menguasai bagian ini.

Teknik pencarian data dari array yang paling mudah adalah

dengan cara sequential search, dimana data dalam array dibaca 1

demi satu, diurutkan dari index terkecil ke index terbesar,

maupun sebaliknya.

Contoh :

Array :

int a[5] = {0,3,6,10,1} (index array pada bahasa C++ dimulai

dari index ke 0 !!!) jika kita ingin mencari bilangan 6

dalam array tersebut, maka proses yang terjadi kita mencari

a) dari array index ke-0, yaitu 0, dicocokan dengan

bilangan yang akan dicari, jika tidak sama, maka

mencari ke index berikutnya

b) pada array index ke-1, juga bukan bilangan yang dicari,

maka kita mencari lagi pada index berikutnya

c) pada array index ke-2, ternyata bilangan yang kita cari

ada ditemukan, maka kita keluar dari looping pencarian.

Contoh source :

Output:

Binary searchMetode pencarian yang kedua adalah binary search, pada metode

pencarian ini, data harus diurutkan terlebih dahulu. Pada

metode pencarian ini, data dibagi menjadi dua bagian

(secara logika), untuk setiap tahap pencarian

Pencarian Biner (Binary Search) dilakukan untuk :

Memperkecil jumlah operasi pembandingan yang harus

dilakukan antara data yang dicari dengan data yang ada

di dalam tabel, khususnya untuk jumlah data yang sangat

besar ukurannya.

Prinsip dasarnya adalah melakukan proses pembagian

ruang pencarian secara berulang-ulang sampai data

ditemukan atau sampai ruang pencarian tidak dapat

dibagi lagi (berarti ada kemungkinan data tidak

ditemukan).

Syarat utama untuk pencarian biner adalah data di dalam

tabel harus sudah terurut, misalkan terurut menaik.

Algoritma binary search :

1. Data diambil dari posisi 1 sampai posisi akhir N

2. Kemudian cari posisi data tengah dengan rumus: (posisi

awal + posisi akhir) / 2

3. Kemudian data yang dicari dibandingkan dengan data

yang di tengah, apakah sama atau lebih kecil, atau

lebih besar?

4. Jika lebih besar, maka proses pencarian dicari dengan

posisi awal adalah posisi tengah + 1

5. Jika lebih kecil, maka proses pencarian dicari dengan

posisi akhir adalah posisi tengah – 1

6. Jika data sama, berarti ketemu.

Keunggulan Binary Search

Keunggulan utama dari algoritma binary search adalah

kompleksitas algoritmanya yang lebih kecil daripada

kompleksitas algoritma sequential search. Hal ini

menyebabkan waktu yang dibutuhkan algoritma binary search

dalam mencari sebuah record dalam sebuah tabel lebih kecil

daripada waktu yang dibutuhkan algoritma sequential search.

Contoh source binary search :

Output :

Interpolation Search

Interpolation search merupakan salah satu metode

pencarian yang dapat digunakan. Seperti pada binary search,

data yang harus diurutkan terlebih dahulu, sebelum dapat

dilakukan pencarian dengan metode ini. Pada metode

pencarian ini, kita mencoba menebak letak data yang kita

cari, dengan perhitungan

Jika data[posisi] > data yg dicari, high = pos – 1

Jika data[posisi] < data yg dicari, low = pos + 1

Contoh source code interpolation search :

Output:

Percobaan 1

Algoritma dan Struktur Data

Nama Program : Program Searching

Bahasa Pemrogramam : C++

Compiler : Code Blocks

Script program :#include <stdio.h>

#include <iostream>

#include <stdlib.h>

#include <string.h>

#include <math.h>

using namespace std;

int data[10],data2[10];

void Sequential_Search() //fungsi pencarian dengan sequential

{

int i,cari,flag=0;

printf("Masukan data yang ingin dicari : ");

scanf("%i",&cari);

for(i=0;i<10;i++)

{

if(data[i]==cari)

{

#include <stdio.h>

#include <iostream>

#include <stdlib.h>

#include <string.h>

#include <math.h>

using namespace std;

int data[10],data2[10];

void Sequential_Search() //fungsi pencarian dengan sequential

{

int i,cari,flag=0;

printf("Masukan data yang ingin dicari : ");

scanf("%i",&cari);

for(i=0;i<10;i++)

{

if(data[i]==cari)

{

break;

}

}

if(flag==1)

printf("Data yang anda cari ditemukan pada index ke-%i\n",i);

else

{

printf("Data yang anda cari tidak ditemukan, mohon maaf!\n");

printf("\n");

}

}

void Binary_Search() //fungsi pencarian dengan binary

{

int temp,awal,tengah,akhir,cari,a,i,flag=0;

awal=0;

akhir=9;

printf("Data yang anda cari :");

scanf("%i",&cari);

while(awal<=akhir && flag==0)

{

tengah=(awal+akhir)/2;

if(data2[tengah]==cari)

{

flag=1;

break;

}

else if(data2[tengah]<cari)

{

awal=tengah+1;

printf("cari kiri\n");

}

else

}

}

if(flag==1) printf("Data ditemukan");

else printf("Data tidak ditemukan");

}

void Interpolation_Search() //fungsi pencarian dengan interpolation

{

int data[10];

int low,high,pos,cari,flag=0;

float posisi;

low=0;

high=9;

printf("Data yang anda cari :");

scanf("%i",&cari);

do

{

posisi=(float)((cari-data2[low])/(data2[high]-data2[low]))*(high-low)+low;

pos=floor(posisi);

if (data2[pos]==cari)

{

flag=1; //data ditemukan

break;

}

if(data2[pos]>cari) high=pos-1;

else if(data2[pos]<cari) low=pos+1;

}while(cari>=data2[low] && cari<=data2[high]);

if(flag==1)printf("Data ditemukan\n");

else printf("Data tidak ditemukan, mohon maaf!\n");

}

void Input_Data() //fungsi input data

{

printf("\nInputkan data sebanyak 10\n\n");

printf("Masukkan data ke-%d = ",(i+1));

scanf("%d",&data[i]);

data2[i] = data[i];

}

}

int main()

{

int pilih,i,a,temp;

cout<<"|============================|"<<endl;

printf("| Pilihan Searching |\n");

cout<<"|----------------------------|"<<endl;

printf("| 1. Sequential Search |\n");

printf("| 2. Binary Search |\n");

printf("| 3. Interpolation Search |\n");

cout<<"|============================|"<<endl;

printf("\nPilihan Anda = ");

scanf("%d",&pilih);

Input_Data();

for (a=0;a<=4;a++)

{

data2[a]=data[a];

}

for (a=0;a<4;a++)

{

for (i=a+1;i<=4;i++)

{

if (data2[i]<data2[a])

{

temp = data2[i];

Output Program :

Algoritma :

1. Mulai.

2. Membaca header file

3. Mendeklarasikan fungsi searching

4. Pilihan Searching

}

}

switch(pilih)

{

case 1:Sequential_Search();

break;

case 2:Binary_Search();

break;

case 3:Interpolation_Search();

break;

default:

break;

}

a). Jika pilih 1 maka akan memanggil fungsi

sequentil search

b). Jika pilih 2 maka akan memanggil fungsi binary

search

c). Jika pilih 3 maka akan memanggil fungsi

interpolation search

5. Input data sebanyak yang telah ditentukan

6. Masukkan data yang akan dicari

7. Cetak hasil sesuai dengan pilihan searching

a). Searching dengan fungsi sequential search

b). Searching dengan fungsi binary search

c). Searching dengan fungsi intepolation search

8. Selesai

Deskripsi:

Program diatas mencari bilangan yang akan diinputkan oleh

user. Dan ada beberapa pilihan searching pada program ini.

Yang pertama adalah sequential search adalah teknik pencarian

data dimana data dicari secara urut dari depan ke belakang

atau dari awal sampai akhir. Dan data yang dicari akan

ditampilkan pada index keberapa data tersebut berada. Yang

kedua adalah binary search pada metode pencarian ini, data

harus diurutkan terlebih dahulu. Dan yang ketiga adalah

interpolation search, Seperti pada binary search, data yang harus

diurutkan terlebih dahulu, sebelum dapat dilakukan pencarian

dengan metode ini.

Percobaan 2.1

Algoritma dan Struktur Data

Nama Program : Program array 1 dimensi

Bahasa Pemrogramam : C++

Compiler : Code Blocks

Script program :

#include<stdio.h>

#include<iostream>

using namespace std;

int main()

{

int data[100];

int i, cari, n;

cout<<"Masukkan banyak array = ";

cin>>n;cout<<endl;

for(int j=0;j<n;j++)

{

cout<<"Masukkan data ke ["<<j<<"] = ";

cin>>data[j];

Output Program:

Algoritma :

1. Mulai.

2. Membaca header file

3. Deklarasi fungsi array

4. Masukkan banyak array

5. Input data sesuai dengan banyak data yang telah

dimasukkan

6. Masukkan data yang ingin dicari

7. Hasil pencarian

“Data (yang dicari) ditemukan pada indeks ke []

8. Selesai

Deskripsi :

Program diatas berfungsi untuk mencari data yang

telah diinputkan dan ditunjukan pada indeks keberapa.

Program diatas menggunakan fungsi array. Untuk

menampilkan hasil dari data yang dicari adalah sbb: printf("Data %i ditemukan pada indeks ", cari);

for(i=0;i<n;i++){

if(data[i]==cari)

printf("ke [%i], ", i);

maka hasil nya akan seperti “ Data (yang dicari)

ditemukan pada indeks ke [].

#include<stdio.h>

#include<iostream>

using namespace std;

int main()

{

int data[100];

int i, cari, n;

cout<<"Masukkan banyak array = ";

cin>>n;cout<<endl;

for(int j=0;j<n;j++)

{

cout<<"Masukkan data ke ["<<j<<"] = ";

cin>>data[j];

Percobaan 2.2

Algoritma dan Struktur Data

Nama Program : Program array 2 dimensi

Bahasa Pemrogramam : C++

Compiler : Code Blocks

Script program :#include<iostream>

#include<iomanip>

using namespace std;

int main ()

{

int a,b,data[10][10],baris,kolom,cari,i;

cout<<endl;

cout<<" Inputkan data baris array : ";

cin>>baris;

cout<<endl;

cout<<" Inputkan data kolom array : ";

cin>>kolom;

cout<<endl;

for (a=0;a<baris;a++)

{

for (b=0;b<kolom;b++)

{

cout<<"Inputkan angka pada indeks ["<<a<<"]["<<b<<"] = ";

cin>>data[a][b];

cout<<endl;

}

}

Output Program :

Algoritma :

1. Mulai

2. Membaca header file

3. Deklarasi fungsi array

#include<iostream>

#include<iomanip>

using namespace std;

int main ()

{

int a,b,data[10][10],baris,kolom,cari,i;

cout<<endl;

cout<<" Inputkan data baris array : ";

cin>>baris;

cout<<endl;

cout<<" Inputkan data kolom array : ";

cin>>kolom;

cout<<endl;

for (a=0;a<baris;a++)

{

for (b=0;b<kolom;b++)

{

cout<<"Inputkan angka pada indeks ["<<a<<"]["<<b<<"] = ";

cin>>data[a][b];

cout<<endl;

}

}

cout<<endl;

cout<<"Inputkan nilai yang dicari : ";

cin>>cari;

cout<<endl;

i=0;

for (a=0;a<baris;a++)

{

for (b=0;b<kolom;b++)

{

if (cari==data[a][b])

{

cout<<"Data ditemukan pada indeks ["<<a<<"]["<<b<<"]\n";

i++;

}

}

}

if (i==0)

4. Masukkan banyak baris pada array

5. Masukkan banyak kolom pada array

6. Masukkan data sebanyak yang telah ditentukan sesuai

dengan banyak baris dan kolom array

7. Tampilan array 2 dimensi yang telah diinputkan

8. Masukkan data yang akan dicari

9. Cetak hasil “data ditemukan pada indeks [ ] [ ]”

10. Selesai.

Deskripsi :

Program diatas akan menampilkan sebuah array 2

dimensi dimana baris dan kolom ditentukan oleh user.

Kemudian user memasukkan data-data sesusai dengan

banyak baris dan kolom yang telah diinputkan

sebelumnya. Setelah itu user akan memasukkan data yang

mana yang akan dicari. Setelah dipilih akan muncul

hasil nya contoh : “Data ditemukan pada indeks [0]

[1]”.

Percobaan 3.1

Algoritma dan Struktur Data

Nama Program : Program array 1 dimensi

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :

#include<stdio.h>

#include<iostream>

using namespace std;

int main()

{

int data[100];

int i, cari, n, jumlah=0;

cout<<endl;

cout<<" Masukkan jumlah array = ";

cin>>n;

cout<<endl;

for(int j=0;j<n;j++)

{

cout<<"Masukkan data ke ["<<j<<"] = ";

cin>>data[j];

cout<<endl;

}

cout<<" Masukkan data yang ingin dicari : ";

cin>>cari;

Output Program :

Algoritma :

1. Mulai

2. Membaca header file

3. Deklarasi Fungsi Array

4. Masukkan banyaknya jumlah array yang diingikan

5. Masukkan data array sebanyak yang telah ditentukan

sebelumnya

6. Masukkan data yang ingin dicari

7. Cetak hasil seperti “ data ( . . . ) ditemukan pada

indeks ke [ ], data ditemukan sebanyak ( . . . ) data

8. Selesai

Deskripsi :

Program diatas akan mencari sebuah data dan banyak data yang

dicari tersebut. Sama seperti program-program sebelumnya

#include<stdio.h>

#include<iostream>

using namespace std;

int main()

{

int data[100];

int i, cari, n, jumlah=0;

cout<<endl;

cout<<" Masukkan jumlah array = ";

cin>>n;

cout<<endl;

for(int j=0;j<n;j++)

{

cout<<"Masukkan data ke ["<<j<<"] = ";

cin>>data[j];

cout<<endl;

}

cout<<" Masukkan data yang ingin dicari : ";

cin>>cari;

}

cout<<endl;

cout<<"\nData ditemukan sebanyak "<<jumlah<<" data.";

cout<<endl;

}

program ini menggunakan fungsi array. Untuk menentukan jumlah

data yang di cari menggunakan script seperti berikut :

if(data[i]==cari){ //jika data yang dicari berada pada data data[i]

printf("ke [%i], ", i); //tampilkan data beserta index

jumlah=jumlah+1; //dan penemuan data dijumlahkan

Percobaan 3.2

Algoritma dan Struktur Data

Nama Program : Program input number secara random

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :#include<iostream>

#include <stdlib.h>

using namespace std;

int main()

{

int n,data[50],cari,a,i,ganjil,genap,odd[50],even[50];

cout<<endl;

cout<<" Inputkan data :";

cin>>n;

cout<<endl;

cout<<" Data random : \n";

cout<<endl;

for (a=0;a<n;a++)

{

data[a]=rand();

cout<<endl;

cout<<data[a]<<endl;

cout<<endl;

}

ganjil=0;

genap=0; for (a=0;a<n;a++){

if(data[a]%2==0)

Output Program :

Algoritma :

1. Mulai

2. Membaca header file

3. Deklarasi array

4. Data akan muncul secara random

#include<iostream>

#include <stdlib.h>

using namespace std;

int main()

{

int n,data[50],cari,a,i,ganjil,genap,odd[50],even[50];

cout<<endl;

cout<<" Inputkan data :";

cin>>n;

cout<<endl;

cout<<" Data random : \n";

cout<<endl;

for (a=0;a<n;a++)

{

data[a]=rand();

cout<<endl;

cout<<data[a]<<endl;

cout<<endl;

}

ganjil=0;

genap=0; for (a=0;a<n;a++)

{

if(data[a]%2==0)

else

{

ganjil++;

odd[ganjil]=data[a];

}

}

cout<<endl;

cout<<" Data genap ada "<<genap<<" itu adalah\n";

for (a=1;a<=genap;a++)

cout<<even[a]<<endl;

cout<<endl;

cout<<"Data ganjil ada "<<ganjil<<" itu adalah\n";

for (a=1;a<=ganjil;a++)

cout<<odd[a]<<endl;

5. Membaca fungsi

a. Termasuk dalam genap

b. Termasuk dalam genjil

6. Cetak hasil

7. Selesai

Deskripsi :

Program diatas menampilkan data yang akan muncul secara random. Pertama user memasukkan jumlah atau banyak data. Setelah itu akan muncul data secara random sesuai dengan yang telah ditentukan secara random. Kemudian data akan dengan sendiri nya mengelompokkan sesuai dengan genap atau ganjilnya data .

Tugas Rumah 1

Algoritma dan Struktur Data

Nama Program : Program Kata

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :#include <stdio.h>

#include <ctype.h>

#include <string.h>

#include <iostream>

using namespace std;

void sequential_search(char data[],int cari, const int size);

int main()

{

char kata[100],data1[50],data2[50],data3[50],cari;

int i,vokal=0,numerik=0,konsonan=0,size,jml;

cout<<endl;

cout<<" >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;

cout<<" PROGRAM KATA "<<endl;

cout<<" >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;

cout<<endl;

#include <stdio.h>

#include <ctype.h>

#include <string.h>

#include <iostream>

using namespace std;

void sequential_search(char data[],int cari, const int size);

int main()

{

char kata[100],data1[50],data2[50],data3[50],cari;

int i,vokal=0,numerik=0,konsonan=0,size,jml;

cout<<endl;

cout<<" >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;

cout<<" PROGRAM KATA "<<endl;

cout<<" >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;

cout<<endl;

for (int a=0;kata[a];a++)

{ //Fungsi toupper adalah merubah huruf kecil menjadi huruf kapital

if(toupper(kata[a])=='A'||toupper(kata[a])=='I'||toupper(kata[a])=='U'||toupper(kata[a])=='E'||toupper(kata[a])=='O')

{

data1[vokal]=kata[a];

vokal++;

}

else if (isdigit (kata[a]))

{

data2[numerik]=kata[a];

numerik++;

}

else if (isspace (kata[a])) {}

else

{

data3[konsonan]=kata[a];

konsonan++;

}

}

printf("\n Huruf Vokal = %d = ",vokal);

for (i=0;i<vokal;i++)

{

printf("%c ", data1[i]);

}

cout<<endl;

printf("\n Numerik = %d = ",numerik);

for (i=0;i<numerik;i++)

{

printf("%c ", data2[i]);

}

cout<<endl;

printf("\n Huruf Konsonan = %d = ",konsonan);

{

printf("%c ", data3[i]);

}

cout<<endl;

jml=vokal+numerik+konsonan;

printf("\n Total Kalimat = %d ",jml);

cout<<endl;

printf("\n Data Yang Ingin Dicari : ");

scanf("%c",&cari);

sequential_search(kata,cari,size);

}

void sequential_search(char data[],int cari, const int size)

{

int i, flag=0;

for(i=0;i<size;i++)

{

if (data[i]==cari)

{

flag=1;

cout<<endl;

printf ("\nData yang di cari ada pada index ke-%d", i);

}

}

cout<<endl;

if (flag!=1)

{

cout<<endl;

printf("Data yang dicari tidak ditemukan !!!\n");

OutProgram :

Algoritma :

1. Mulai

2. Membaca header file

3. Membaca fungsi array

4. Pendeklarasian

5. Masukkan sebuah kalimat yang diinginkan

6. Menampilkan dan menghitung huruf vokal sbbif(toupper(kata[a])=='A'||toupper(kata[a])=='I'||toupper(kata[a])=='U'||

toupper(kata[a])=='E'||toupper(kata[a])=='O')

{

data1[vokal]=kata[a]; //jika kata a,i,u,e,o berarti termasuk dalam huruf

vokal

vokal++;

}

7. Menampilkan dan menghitung Numerik sbbelse if (isdigit (kata[a]))

{

data2[numerik]=kata[a];

numerik++;

}

8. Menampilkan dan menghitung Huruf Konsonan sbbelse if (isspace (kata[a])) {}

else

{

data3[konsonan]=kata[a];

konsonan++;

}

9. Menampilkan dan menghitung total kalimat sbbjml=vokal+numerik+konsonan;

10. Tampilan Huruf Vokal, Numerik, Huruf Konsonan, dan

Total Kalimat

11. Masukkan data yang ingin dicari

12. Gunakkan fungsi sequential search

a). Jika data yang dicari ditemukan akan muncul kalimat

seperti berikut “Data yang di cari ada pada index ke-%d “ %d

membaca pada index keberapa data tersebut berada

b). Jika data yang dicari tidak ditemukan akan muncul

kalimat seperti berikut “Data yang dicari tidak ditemukan !!!”

13. Selesai

Deklarasi :

Program ini akan menampilkan Huruf Vokal, Huruf Konsonan,

Numerik, dan total kata dari kalimat yang telah diinputkan

oleh user. Program ini memanfaatkan fungsi searching yaitu

sequential search. Program ini juga menggunakan fungsi

toupper. Fungsi Toupper sendiri berguna untuk mengubah huruf

kecil menjadi huruf Kapital.

Tugas Rumah 2

Algoritma dan Struktur Data

Nama Program :Program searching number dengan input

random

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :#include <iostream>

#include <iomanip>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <cmath>

using namespace std;

int array[100];

int flag = 0, i, banyak, metode;

int a, b=0;

#include <iostream>

#include <iomanip>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <cmath>

using namespace std;

int array[100];

int flag = 0, i, banyak, metode;

int a, b=0;

else {

akhir = tengah - 1;

printf("cari kiri\n");

}

}

}

int interpolation(){

int awal, akhir, pos, cari, flag=0;

float posisi;

awal=0;

akhir=9;

printf("Data yang anda cari :");

scanf("%i",&cari);

do {

posisi = (float)(((cari-array[awal])/(array[akhir]-array[awal]))*(akhir-awal)+awal);

pos = floor(posisi);

if(array[pos] == cari){

flag = 1;

break;

}

if(array[pos] > cari) akhir = pos - 1;

else if (array[pos] < cari) awal = pos + 1;

} while(cari >= array[awal] && cari <= array[akhir]);

}

main(){

cout<<endl;

cout<<" +++++++++++++++++++++++++++++++++++++++++++"<<endl;

cout<<" Masukkan jumlah data yang digunakan : ";

cin>>banyak;

cout <<endl;

cout<<endl;

cout<<">>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<"<<endl;

if (tampil == 'Y' || tampil == 'y'){

for(int j=0; j<banyak;j++){

array[j] = rand()%banyak;

cout << " " << array[j] << " ";

}

}

else

{

}

cout<<endl<<endl;

cout<<"==========================================="<<endl;

cout<< "\n\nUrutkan data [Y/T] : ";

cin>>urutkan;

cout<<endl;

cout<<"==========================================="<<endl;

if(urutkan == 'Y' || urutkan == 'y'){

for(int ii=0; ii<banyak; ii++){

if(array[ii] >= array[ii+1]){

temp = array[ii];

array[ii] = array[ii+1];

array[ii+1] = temp;

metode = 1;

}

}

}

else {

metode = 0;

}

cout<<endl;

if(metode != 0){

cout<<"|=========================|"<<endl;

cout<<"|Pilih metode pencarian : |"<<endl;

cout<<"|-------------------------|"<<endl;

cout<<"|[1] Binary |"<<endl;

cout<<"|[2] Interpolation |"<<endl;

cout<<"|=========================|"<<endl;

cout<<"Pilihan metode : ";

cin>>metode;

}

if(metode == 0){

for(i = 0;i<banyak;i++){

if(array[i] == cari){

flag = 1;

break;

}

}

}

else if(metode == 1){

binary(); }

else if(metode == 2){

interpolation();

}

if(flag == 1) cout << "Data Ditemukan ";

else cout << "Data Ditemukan ";

getch();

return 0;

}

OutProgram :

Algoritma :

1. Mulai

2. Membaca header file

3. Pendeklarasian dan Deklarasi Array

4. Deklarasi Fungsi searching

a). Binary search

b). Interpolation search

5. Masukkan banyak data

6. Data akan muncul secara random tidak diinputkan oleh user

7. Pilihan menampilkan data [Y/T]

a. If pilih Y maka data akan ditampilkan

b. If pilih T maka data tidak akan ditampilkan

8. Pilihan urutkan data [Y/T]

a. If pilih Y maka data akan diurutkan

b. If pilih T maka data tidak akan diurutkan dan tidak

bisa dioperasikan dengan binary search atau

interpolation search hanya bisa dioperasikan dengan

sequential search.

9. Masukkan data yang akan dicari

10. Pilihan menu.

a. Binary search

b. Interpolation search

Dapat kemenu pilihan ini jika pada pilihan urutkan data

user memilih [Y], jika memilih [T] maka menu pilihan

ini tidak muncul.

11. Cetak Hasil

12. Selesai

Deklarasi :

Program diatas akan menampilkan sebuah data yang banyak

data nya diinputkan oleh user tetapi data-data yang akan

muncul tidak diinputkan oleh user atau akan muncul secara

random. Kemudian pada pilihan urutkan data, jika user ingin

mengurutkan data maka user akan menuju kemenu metode searching

diantaranya binary dan interpolation seacrh, jika user tidak

mengurutkan data akan langsung dicari menggunakan sequential

search.

Tugas Rumah 3

Algoritma dan Struktur Data

Nama Program : Program mengubah kata

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :

#include <stdio.h>

#include <iostream>

#define N 255

using namespace std;

/* prototype fungsi */

void replace(char*, char, char);

int main(){

char data[N], find, ganti;

cout<<endl;

cout<<" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;

printf("\n Masukkan sebuah kalimat: ");

scanf("%[^\n]", data);

cout<<endl;

printf(" Karakter yang dicari: ");

getchar();scanf("%c", &find);

cout<<endl;

OutProgram :

Algoritma :

1. Mulai

2. Membaca header file

3. Masukkan sebuah kalimat

4. Masukkan karakter yang dicari

5. Masukkan karakter pengganti

6. Memanggil fungsi merubah karakter sbb*data=((*data == find)?replace:*data);

data++;

i++;

#include <stdio.h>

#include <iostream>

#define N 255

using namespace std;

/* prototype fungsi */

void replace(char*, char, char);

int main(){

char data[N], find, ganti;

cout<<endl;

cout<<" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;

printf("\n Masukkan sebuah kalimat: ");

scanf("%[^\n]", data);

cout<<endl;

printf(" Karakter yang dicari: ");

getchar();scanf("%c", &find);

cout<<endl;

void replace(char *data, char find, char replace){

int i=0;

while(*data !='\0'){

/* fungsi merubah karakter */

*data=((*data == find)?replace:*data);

data++;

i++;

}

7. Cetak Hasil replace atau hasil merubah karakter

8. Selesai

Deklarasi :

Program diatas menghasilkan sebuah kalimat yang dirubah

karakternya dengan menggunakan fungsi replace. Pertama

masukkan sebuah kalimat yang diinginkan, kemudian masukkan

sebuah karakter yang ingin diganti. Setelah itu masukkan

karakter penggantinya. Kemudian program akan memanggil fungsi

replace atau fungsi untuk merubah karakter yang telah

ditentukan. Setelah itu hasil replace akan keluar sesuai

dengan karakter yang ingin diganti tadi dengan karakter

penggantinya.

KESIMPULAN

1. Sequential Search adalah teknik pencarian data dimana data

dicari secara urut dari depan ke belakang atau dari awal

sampai akhir.

2. Kelebihan dari proses pencarian secara sequential ini jika

data yang dicari terletak didepan, maka data akan

ditemukan dengan cepat.

3. Binary search metode pencarian ini, data harus diurutkan

terlebih dahulu.

4. Keunggulan utama dari algoritma binary search adalah

kompleksitas algoritmanya yang lebih kecil daripada

kompleksitas algoritma sequential search.

5. Pencarian Biner (Binary Search) dilakukan untuk :

Memperkecil jumlah operasi pembandingan yang harus

dilakukan antara data yang dicari dengan data yang ada

di dalam tabel, khususnya untuk jumlah data yang sangat

besar ukurannya.

Prinsip dasarnya adalah melakukan proses pembagian

ruang pencarian secara berulang-ulang sampai data

ditemukan atau sampai ruang pencarian tidak dapat

dibagi lagi (berarti ada kemungkinan data tidak

ditemukan).

Syarat utama untuk pencarian biner adalah data di dalam

tabel harus sudah terurut, misalkan terurut menaik.

6. Interpolation search. Seperti pada binary search, data yang harus

diurutkan terlebih dahulu, sebelum dapat dilakukan

pencarian dengan metode ini.

7. Pada metode pencarian ini, kita mencoba menebak letak data

yang kita cari, dengan perhitungan

Jika data[posisi] > data yg dicari, high = pos – 1

Jika data[posisi] < data yg dicari, low = pos + 1

DAFTAR RUJUKAN

1. Tim Asisten Dosen. 2014. Modul 3 Searhing (Pencarian). Malang:

Unversitas Negeri Malang.

2. http://blog.creanivate.com/2010/08/sequential-search-

program-in-c.html

3. http://blog-sharings.blogspot.com/2012/07/konsep-binary-

search.html