Anda di halaman 1dari 29

Muhammad Fauzi & Reiza Pahalwan

~Soal~

BAB I

1. Buatlah program perkalian matriks dengan menggunakan bahasa pemrograman C/C++!


2. Ada 5 orang mahasiswa dan tiap mahasiswa mengambil 7 mata kuliah, nilai yang diperoleh
berupa angka (0-100). Buatlah program untuk mencari nilai rata-rata dengan menggunakan
bahasa pemrograman C/C++!
3. Buatlah program pendataan data mahasiswa dengan menggunakan tipe data record dengan
menggunakan bahasa pemrograman C/C++!

BAB II

4. Jika diketahui sebuah kalimat adalah sebagai berikut : TEKNIK INFORMATIKA JURUSAN FAVORIT.
Buatlah program dengan bahasa C/C++ untuk membalikan kalimat tersebut!

BAB IV

5. Carilah 2 metode sorting lainnya dan buat masing-masing Algoritma, Flowchart, dan program
dengan menggunakan bahasa C/C++!
6. Dengan menggunakan Algoritma (langkah-langkah) yang ada pada metode Pengurutan langsung
dan metode seleksi, buatlah
a. Flowchart system
b. Program untuk pengurutan data metode seleksi dan metode langsung dengan C/C++
7. Dari contoh Program sorting dengan metode bubble sort diatas dengan bahasa pascal, rubahlah
ke dalam bahasa pemrograman C/C++!

BAB V

8. Carilah 2 metode searching (pencarian) lainya dan buatlah masing-masing Algoritma, flowchart
dan programnya menggunakan bahasa C/C++!
9. Dengan menggunakan Algoritma (langkah-langkah) yang ada pada pencarian data, buatlah :
a. Flowchart metode seuqential searching dan metode binary searching
b. Program dan outputnya untuk metode sequential searching dan metode binary searching
dengan bahasa C/C++

Tugas Struktur Data 1


Muhammad Fauzi & Reiza Pahalwan

= Jawab =

1. Program perkalian matriks :

Source Code :

#include <stdio.h>
#include <conio.h>

void main()
{ int A[3][4], B[3][4], X[3][4], i, j;
clrscr();

printf ("Perkalian Matriks (Ordo 2x2)\n");


printf ("----------------------------\n\n");

/******* Masukkan matriks A *******/


printf("Penetapan Nilai Matriks A\n");
for(i=0;i<2;i++)
{ for(j=0;j<2;j++)
{ printf("Baris ke - %i, Kolom ke - %i : ",i+1,j+1);
fflush(stdin);scanf("%i",&A[i][j]);
}
}
printf("\n");

/******** Masukkan matriks B ********/


printf("Penetapan Nilai Matriks B\n");
for(i=0;i<2;i++)
{ for(j=0;j<2;j++)
{ printf("Baris ke - %i, Kolom ke - %i : ",i+1,j+1);
fflush(stdin);scanf("%i",&B[i][j]);
}
}

/******** Proses perkalian matriks A dan B ********/


for(i=0;i<2;i++)
{ for(j=0;j<2;j++)
{ X[i][j]=(A[i][0]*B[0][j])+(A[i][1]*B[1][j]);
}
}

/******** Cetak hasil perkalian matriks A dan B *******/


printf("\nHasil perkalian matriks A dan B\n");
printf("\n");
for(i=0;i<2;i++)
{ for(j=0;j<2;j++)
printf("%6i",X[i][j]);printf("\n");
}
printf("\n\n");
getch();
}

Tugas Struktur Data 2


Muhammad Fauzi & Reiza Pahalwan

Hasil output program :

2. Program untuk mencari nilai rata-rata :


Source Code :
#include <stdio.h>
#include <conio.h>
main()
{
int X[20][10];
float rata;
int i,j,jum,n,hasil_rata;
clrscr();
hasil_rata=0;
n = 5;
for (i=0;i<n;i++)
{
clrscr();
printf("Data Ke % d = \n",i+1);
puts("===========================");
printf("Mahasiswa ke ");scanf ("%4d", &X[i][0]);
jum=0;
for (j=1;j<8;j++)
{
printf("Nilai ke % d : ",j);scanf("%4d",&X[i][j]);
jum=jum+X[i][j];
}
rata=jum/7;
printf("====================+ \n");
printf("Jumlah = %4d\n",jum);
X[i][8]=rata;
printf("Rata-rata = %4d\n",X[i][8]);

Tugas Struktur Data 3


Muhammad Fauzi & Reiza Pahalwan

X[i][j]=jum;
getch();
}
clrscr();
printf(" DAFTAR NILAI 7 MATA KULIAH DARI 5 MAHASISWA\n");
printf("----------------------------------------------------------------------------\n");
printf("No.Mhs | M.kul | M.kul | M.kul | M.kul | M.kul | M.kul | M.kul | Jlh | Rata2\n");
printf(" | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | \n");
printf("----------------------------------------------------------------------------\n");

for (i=0;i<n;i++)
{
printf(" \n");
for (j=0;j<=8;j++)
{
printf(" %d ",X[i][j]);
}
printf("%d ",X[i][8]/7);
hasil_rata=hasil_rata+(X[i][8]/7);
}
printf("\n============================================================================");

return(0);
}

Hasil output programnya :

Tugas Struktur Data 4


Muhammad Fauzi & Reiza Pahalwan

3. Program pendataan data mahasiswa dengan menggunakan tipe record :


Source Code :
#include <conio.h>
#include <string.h>
#include <stdio.h>

void main ()

{
struct data_mahasiswa
{
char nim [50], unit [60], nama[100], semester[10];

};
int i, n;
struct data_mahasiswa biodata[20];

clrscr();

printf(" ----------------- \n");


printf(" | DATA MAHASISWA |\n");
printf(" ----------------- \n\n");

printf ("Banyak Data : "); scanf ("%d", &n);


for (i=0;i<n;i++)
{
clrscr();
printf ("Data ke %d\n", i+1);
printf ("NIM : ");
fflush (stdin);scanf("%s", &biodata[i].nim);
printf ("NAMA : ");
fflush (stdin);scanf("%s", &biodata[i].nama);
printf ("UNIT : ");
fflush (stdin);scanf("%s", &biodata[i].unit);
printf ("SEMESTER : ");
fflush (stdin);scanf("%s", &biodata[i].semester);
}

printf("\n\n");

clrscr ();
printf(" ----------------- \n");
printf(" | DATA MAHASISWA |\n");
printf(" ----------------- \n\n");

printf ("NIM\t\tNAMA\t\tUNIT\tSEMESTER\n\n");
for (i=0;i<n;i++)
{
printf ("%s\t%s\t %s\t %s\n", biodata[i].nim,
biodata[i].nama, biodata[i].unit, biodata[i].semester);
}
getch();

Tugas Struktur Data 5


Muhammad Fauzi & Reiza Pahalwan

Hasil output programnya :

4. Program membalikkan kalimat TEKNIK INFORMATIKA JURUSAN FAVORIT :


Source code :
#include<stdio.h>
#include <conio.h>
#include<string.h>
int MAXSTACK;
typedef char itemtype;
typedef struct
{
itemtype item[50];
int jmlh;
}
stack;
void inisialisasitumpukan(stack *c)
{
c->jmlh = 0;
}

void push(itemtype x, stack *s)


{
s->item[s->jmlh]=x;
++(s->jmlh);
}
int pop(stack *s)
{

Tugas Struktur Data 6


Muhammad Fauzi & Reiza Pahalwan

--(s->jmlh);
return (s->item[s->jmlh]);
}

main()
{
int i;
char input[50] = "TEKNIK INFORMATIKA JURUSAN FAVORIT";
printf ("Kalimat yang akan dibalikkan : TEKNIK INFORMATIKA JURUSAN FAVORIT\n\n");
stack tumpukan;
inisialisasitumpukan(&tumpukan);
MAXSTACK=strlen(input);
for(i=0;i<MAXSTACK;i++)
{
push(input[i],&tumpukan);
}
printf ("Hasil membalikkan dengan operasi stack : \n");
gotoxy(42,3);
for(i=MAXSTACK;i>0;i--)
{
printf("%c", pop(&tumpukan));
}
return (0);
}

Tugas Struktur Data 7


Muhammad Fauzi & Reiza Pahalwan

5. 2 metode sorting lainnya :


1. Metode merge sort :
 Algoritma :

 Data yang akan diurutkan dibagi ke dalam dua kumpulan data yaitu kumpulan pertama
terdiri dari Data[0] sampai dengan Data[4] dan kumpulan kedua terdiri dari Data[5] sampai
dengan Data[9].
 Ditentukan batas kiri L mulai 0 dari kumpulan pertama dan dicari data terkecil setelah data
ke 0 yaitu 9 pada batas kanan M=2 kemudian diurutkan.
 Nilai L=M dan M ditentukan dengan posisi data yang lebih kecil dari data pada posisi L
kemudian diurutkan.
 Proses dilakukan sampai kumpulan pertama terurut.
 Hal yang sama dilakukan terhadap kumpulan kedua sampai data pada kumpulan kedua
terurut
 Langkah terakhir mengurutkan keseluruhan data dari kumpulan pertama dan kedua yang
sudah terurut.

Tugas Struktur Data 8


Muhammad Fauzi & Reiza Pahalwan

 Flowchart :

Mulai

Int data[],x;

Input data

X = data[]/2

Pengurutan Pengurutan
Ascending untuk x1 Ascending untuk x2

Pengurutan
Ascending dari x1
dan x2

Tampilkan hasil
pengurutan

Selesai

Tugas Struktur Data 9


Muhammad Fauzi & Reiza Pahalwan

 Program metode merge sorting :


Source kode :
#include <stdio.h>
#define MAX 10
int Data[MAX];
int temp[MAX];

// Prosedur merge sort


void merge(int Data[], int temp[], int kiri, int tengah, int
kanan)
{
int i, left_end, num_elements, tmp_pos;

left_end = tengah - 1;
tmp_pos = kiri;
num_elements = kanan - kiri + 1;

while ((kiri <= left_end) && (tengah <= kanan))


{
if (Data[kiri] <= Data[tengah])
{
temp[tmp_pos] = Data[kiri];
tmp_pos = tmp_pos + 1;
kiri = kiri +1;
}
else
{
temp[tmp_pos] = Data[tengah];
tmp_pos = tmp_pos + 1;
tengah = tengah + 1;
}
}

while (kiri <= left_end)


{
temp[tmp_pos] = Data[kiri];
kiri = kiri + 1;
tmp_pos = tmp_pos + 1;
}
while (tengah <= kanan)
{
temp[tmp_pos] = Data[tengah];
tengah = tengah + 1;
tmp_pos = tmp_pos + 1;
}

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


{
Data[kanan] = temp[kanan];
kanan = kanan - 1;
}
}
// Prosedur membuat kumpulan data
void m_sort(int Data[], int temp[], int kiri, int kanan)
{

Tugas Struktur Data 10


Muhammad Fauzi & Reiza Pahalwan

int tengah;

if (kanan > kiri)


{
tengah = (kanan + kiri) / 2;

m_sort(Data, temp, kiri, tengah);


m_sort(Data, temp, tengah+1, kanan);

merge(Data, temp, kiri, tengah+1, kanan);


}
}

void mergeSort(int Data[], int temp[], int array_size)


{
m_sort(Data, temp, 0, array_size - 1);
}

int main()
{
int i;

printf("Masukkan DATA SEBELUM TERURUT : \n");


for (i = 0; i < MAX; i++)
{
printf ("Data ke %i : ", i+1);
scanf ("%d", &Data[i]);
}

mergeSort(Data, temp, MAX);

printf("\nDATA SETELAH TERURUT : ");


for (i = 0; i < MAX; i++)
printf("%d ", Data[i]);
printf("\n");
return(0);
}

Hasil output programnya :

Tugas Struktur Data 11


Muhammad Fauzi & Reiza Pahalwan

 Metode Quick Sort Non Rekursif


 Algoritma :

 L dan R menunjukkan data nilai tumpukan teratas pada tumpukan kiri dan kanan. tumpukan
Mula-mula L=0 dan R=9 dan pivot adalah pada data ke-4 yaitu 3. Kita mencari data di
sebelah kiri pivot yang lebih besar daripada 3, ternyata data ke-0 yaitu 12 lebih besar
daripada 3. Untuk data di sebelah kanan pivot, ternyata tidak ada data yang lebih kecil
daripada 3, yang berarti 3 adalah data terkecil, sehingga dilakukan pertukaran.

 Kemudian dibuat dua kumpulan data baru berdasarkan hasil ini. Kumpulan data pertama
adalah data yang memiliki indeks 0 s/d 4-0=4 dan kumpulan data kedua adalah data yang
memiliki indeks 0 + 1 = 1 s/d 9. Kumpulan data kedua ini belum bisa ditentukan sekarang
karena masih tergantung dari hasil pengurutan kumpulan data pertama.

 Kembali ke kumpulan data pertama, dicari pivot kemudian menggunakan aturan yang
serupa. Pivot pada kumpulan data ini adalah data ke-2 yaitu 9. Ternyata terdapat data yang
lebih besar dari 9 di sebelah kiri yaitu 35 sehingga dilakukan pertukaran

 Langkah selanjutnya membuat dua kumpulan data lagi. Kumpulan pertama mempunyai
indeks 0 sampai dengan 4-1=3. Pivot dari kumpulan data ini adalah 9. Perhatikan tidak ada
data yang lebih besar dari 9 di sebelah kiri dan lebih kecil dari 9 di sebelah kanan. Kumpulan
kedua dari indeks 0 s/d 4 adalah data ke 2 dan ke 4-1=3 yaitu 35 dan 11. Ternyata 35 lebih
besar dari 11 sehingga kedua data ini ditukar.

 Kembali ke kumpulan data kedua yang memiliki indeks 1 s/d 9. Kumpulan ini dibagi menjadi
dua yaitu kumpulan data berindeks 1 s/d 4 dan kumpulan data berindeks 5 s/d 9. Pivot dari
data ini adalah data ke 5 yaitu 17. Data yang lebih besar dari 17 di sebelah kiri adalah 35 dan
data yang lebih kecil dari 17 di sebelah kanan adalah 15, jadi kedua data ini ditukar.

 Dari hasil penukaran ini dilakukan pembagian menjadi 2 kumpulan data. Kumpulan pertama
yaitu dari indeks 2 s/d 4, pivot pada data ke 3 dan terjadi penukaran data 15 dan 12.
Kumpulan kedua yaitu dari indeks 4 s/d 5 tidak terjadi pertukaran data Kembali ke kumpulan
kedua dari indeks 5 s/d 9. Pivot dari kumpulan ini adalah 35. Dicari data yang lebih besar
dari 35 di sebelah kiri dan data yang lebih kecil dari 35 di sebelah kanan. Ternyata terjadi
pertukaran data 35 dan 20. Dari hasil pertukaran ini dilakukan pembagian kumpulan data
yaitu data yang mempunyai indeks 6 s/d 7 dan 8 s/d 9. Kumpulan data pertama terjadi
pertukaran data 23 dan 20 sedangkan kumpulan data kedua tidak terjadi pertukaran data

Tugas Struktur Data 12


Muhammad Fauzi & Reiza Pahalwan

- Flowchart metode Quic Sort non rekursif

Mulai

Int data[],x;

Input data

X = data[]/2

Pengurutan Pengurutan
Ascending untuk x1 Ascending untuk x2

Pengurutan
Ascending dari x1
dan x2

Tampilkan hasil
pengurutan

Selesai

Tugas Struktur Data 13


Muhammad Fauzi & Reiza Pahalwan

- Program metode quick sort non rekursif :


Source Code :
#include <stdio.h>
#define MAX 11
#define MaxStack 11
int Data[MAX];
// Prosedur menukar data
void Tukar (int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
// Prosedur pengurutan metode Quick Sort
void QuickSortNonRekursif()
{
struct tump {
int Kiri;
int Kanan;
}Tumpukan[MaxStack];

int i, j, L, R, x, ujung = 1;
Tumpukan[1].Kiri = 0;
Tumpukan[1].Kanan = MAX-1;

while (ujung!=0){
L = Tumpukan[ujung].Kiri;
R = Tumpukan[ujung].Kanan;
ujung--;
while(R > L){
i = L;
j = R;
x = Data[(L+R)/2];
while(i <= j){
while(Data[i] < x)
i++;
while(x < Data[j])
j--;
if(i <= j){
Tukar(&Data[i], &Data[j]);
i++;
j--;
}
}
if(L < i){
ujung++;
Tumpukan[ujung].Kiri = i;

Tugas Struktur Data 14


Muhammad Fauzi & Reiza Pahalwan

Tumpukan[ujung].Kanan = R;
}
R = j;
}
}
}
void main()
{
int i;
//Memasukkan data yang belum terurut
printf("DATA SEBELUM TERURUT : \n");
for(i=1; i<MAX; i++)
{
printf("Data ke %d : ", i);
scanf ("%d", &Data[i]);
}

QuickSortNonRekursif();

// Data setelah terurut


printf("\nDATA SETELAH TERURUT");
for(i=1; i<MAX; i++)
{
printf("\nData ke %d : %d ", i, Data[i]);
}
}

Hasil Output Programnya :

Tugas Struktur Data 15


Muhammad Fauzi & Reiza Pahalwan

6. a. Flowchart
Flowchart Metode pengurutan langsung :

Mulai

Int A, J,T;

Input data (A)

T=A[i]
A[0]=T
J=J-1

if T<A[j]

A[J+1]=A[J]
A[J+1]=T J-J-1

Tampilkan hasil
pengurutan (A)

Selesai

Tugas Struktur Data 16


Muhammad Fauzi & Reiza Pahalwan

Flowchart Metode pengurutan seleksi :

Mulai

Int A, j,I,Lok;

Input data (A)

Lok = l
J=I+1

A[lok]>A[j]

A[lok]=A[I] Lok = j

Tampilkan hasil
pengurutan (A)

Selesai

Tugas Struktur Data 17


Muhammad Fauzi & Reiza Pahalwan

b. Program pengurutan data Metode seleksi dan metode langsung :


o Program Metode Langsung (insertion sort)
Source Code :
#include <stdio.h>
#include <stdlib.h>
#define MAX 11
int Data[MAX];
// Fungsi pengurutan penyisipan langsung
void StraightInsertSort()
{
int i,j,x;
for(i=1; i<MAX; i++){
x = Data[i];
j = i - 1;
while (x < Data[j]){
Data[j+1] = Data[j];
j--;
}
Data[j+1] = x;
}
}
int main()
{
int i;
srand(3);
// Membangkitkan bilangan acak
printf("DATA SEBELUM TERURUT");
for(i=1; i<MAX; i++)
{
Data[i] = (int) rand()/1000+1;
printf("\nData ke %d : %d ", i, Data[i]);
}
StraightInsertSort();
// Data setelah terurut
printf("\n\nDATA SETELAH TERURUT");
for(i=1; i<MAX; i++)
{
printf("\nData ke %i : %i ", i, Data[i]);
}
return(0);
}

Tugas Struktur Data 18


Muhammad Fauzi & Reiza Pahalwan

Hasil ouptut programnya :

o Program Metode Seleksi (Selection sort)


Source Code :
#include <stdio.h>
#include <stdlib.h>
#define MAX 11

int Data[MAX];
// Fungsi pertukaran bilangan
void Tukar (int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
// Fungsi pengurutan metode seleksi
void SelectionSort()

{
int i, j, k;
for(i=1; i<MAX-1;i++){
k = i;
for (j=i+1; j<MAX; j++)
if(Data[k] > Data[j])
k = j;
Tukar(&Data[i], &Data[k]);
}
}

Tugas Struktur Data 19


Muhammad Fauzi & Reiza Pahalwan

void main()
{
int i;
srand(6);

// Membangkitkan bilangan acak


printf("DATA SEBELUM TERURUT");
for(i=1; i<MAX; i++)
{
Data[i] = (int) rand()/1000+1;
printf("\nData ke %d : %d ", i, Data[i]);
}

SelectionSort();

// Data setelah terurut


printf("\n\nDATA SETELAH TERURUT");
for(i=1; i<MAX; i++)
{
printf("\nData ke %d : %d ", i, Data[i]);
}
}

Hasil output programnya :

Tugas Struktur Data 20


Muhammad Fauzi & Reiza Pahalwan

7. Program Metode Bubble Sort dari bahasa Pascal ke Bahasa C++


Source Code :
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define MAX 10

int Data[MAX];
int i;

void masukkan ()
{
printf ("Masukkan data sebanyak 10 : \n\n");
for (i=1; i<MAX; i++)
{
printf("Data ke %d : ", i);
scanf("%d", &Data[i]);
}
clrscr();
for (i=1; i<MAX; i++)
{
printf("%d ", Data[i]);
}
}
void Tukar (int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

void BubbleSort()
{
int j;
for(i=1; i<MAX-1; i++)
for(j=MAX-1; j>=i; j--)
if(Data[j-1] > Data[j])
Tukar(&Data[j-1], &Data[j]);
}

void keluaran ()
{
printf ("\n");
printf ("-----------------------------------\n");
printf ("Data yang telah diurutkan : \n\n");
printf ("Ascending : ");

Tugas Struktur Data 21


Muhammad Fauzi & Reiza Pahalwan

for (i=1; i<MAX; i++)


{
printf("%d ", Data[i]);
}

int main()
{
masukkan();
BubbleSort();
keluaran();
return(0);
}

Hasil output programnya :

8. 2 metode searching lainnya :


Interpolation search :
Algoritma :
- Baca vektor yang akan diketahui, misalnya vektor A dengan N buah elemen dan urutkan
secara naik (Ascending)
- Baca elemen yang akan dicari, misalnya data
- Inisialisasi
Tentukan tm=0, High = N dan Low = 0
- Gunakan rumus
Posisi = (data – A[low] / A[high] –A[low] ) * ( high – low ) + low
- Ketika data >= A[low] dan data<= A[high] lakukan
Jika A[posisi] = data maka tm+1
Jika A[posisi] > data maka high = posisi - 1
Jika A[posisi] < data maka low = posisi + 1
- Jika tm > 0 maka data ditemukan
- Selesai

Tugas Struktur Data 22


Muhammad Fauzi & Reiza Pahalwan

Program metode interpolation search

Source code :
#include<stdio.h>
#include <conio.h>
void main()
{
//deklarasi variable
int A[10], i,j,k,tkr,low,high,pos,tm;
//proses penginputan data
for(i=0;i<10;i++)
{
printf("data ke-%d:",i+1);
scanf("%d",&A[i]);
}
//Input data yang akan dicari
clrscr();
printf("Masukkan data yang akan anda cari:");
scanf("%d",&k);
//proses pengurutan data
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if (A[i]>A[j])
{
tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
//proses pencarian data
tm=0;
high=9;
low=0;
do
{
pos = ((k - A[low]) / (A[high] - A[low]))*(high-low) +
low;
if (A[pos] == k)
{
tm++;
break;
}
if (A[pos] > k)
high = pos-1;
else
if (A[pos] < k)
low = pos + 1;
}
while(k >= A[low] && k <= A[high]);
if (tm>0)
{
printf("data %d yang dicari ada dalam array\n",k);

Tugas Struktur Data 23


Muhammad Fauzi & Reiza Pahalwan

}
//jika tidak ditemukan
else
{
printf("data tidak ditemukan dalam array\n");
}

Hasil output programnya :

Metode pencarian dengan sentinel :


Algoritma :
- Baca vektor yang akan diketahui, misalnya vektor array dengan n elemen
- Baca data yang akan dicari, misalnya x
- Inisialisasi i = 0
- Test apakah array[i] tidak sama dengan x
- Jika tidak maka i +1
- Jika i < N maka data ditemukan

Program metode pencarian sentinel :


Source Code :
# include <conio.h>
# include <stdio.h>
# include <math.h>
void main()
{
int array[]={9,23,90,8,52,3,4,5}, i=0,x;
printf ("masukkan data yang akan dicari ");
scanf ("%d", &x);
array[8]=x;
i=0;
while(array[i]!=x)
i++;
if (i<8)
{
printf("Data ditemukan");
}
else
printf ("data tidak ditemukan");
getch();
}

Tugas Struktur Data 24


Muhammad Fauzi & Reiza Pahalwan

Hasil output programnya :

Flowchart Metode interpolation search dan metode sequential dengan sentinel search
- Flowchart metode interpolation search

Mulai

Int
array[],N,ix;
i =0;

Input data (X)

If array[i]!=x

I<N i+1

Data ketemu

Selesai

Tugas Struktur Data 25


Muhammad Fauzi & Reiza Pahalwan

Flowchart metode interpolation search :

Mulai

Int A,high,low,
N,pos;

Input data dicari


(A)

Tm=0, Low =0
High=N

Pos=(A-x[low]/A[high]-
A[low])*(high-low)+low

If A>=x[low] &&
A<=A[high]

If tm = 0

If [pos] = A Tm + 1

Cetak
hasil

If [pos] > A
High =pos-1

Selesai

If [pos] < A Low=pos + 1

Tugas Struktur Data 26


Muhammad Fauzi & Reiza Pahalwan

Program metode sequential search :


Source Code :
#include <iostream.h>
#include<stdio.h>

void main()
{
int data[8] = {8,10,6,-2,11,7,1,100};
int cari;
int tanda=0;
cout<<"masukkan data yang ingin dicari = "; cin>>cari;
for(int i=0;i<8;i++){
if(data[i] == cari) tanda=1;
}
if(tanda==1) cout<<"Data ada!\n";
else cout<<"Data tidak ada!\n";
}
Hasil output programnya :

Program metode Binary search :


Source Code :
#include<stdio.h>
void main()
{
//deklarasi variabel
int A[10] = {6,47,9,12,3,9,5,19,2,1};
int i,j,k,tkr,top,bottom,middle,tm;

printf("Masukkan data yang akan anda cari:");


scanf("%d",&k);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{if (A[i]>A[j])
{tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
//proses pencarian data
tm=0;
top=9;
bottom=0;
while(top>=bottom)
{
middle=(top+bottom)/2;
if(A[middle]==k)
{tm++;
}

Tugas Struktur Data 27


Muhammad Fauzi & Reiza Pahalwan

if(A[middle]<k)
{bottom=middle+1;
}
else
{top=middle-1;
}
}
if (tm>0)
{ printf("Data %d ditemukan\n",k);
}
else
{ printf("Data %d tidak ditemukan \n", k);
}
}
Hasil output program :

Flowchart Metode Sequential Search :


Mulai

Int
array[],N,ix;
i =0;

Input data (X)

If array[i]!=x

Data ketemu

Selesai

Tugas Struktur Data 28


Muhammad Fauzi & Reiza Pahalwan

Flowchart Metode Binary Search :

Mulai

Int atas,bawah,
N,T,A;

Input data (A)

Atas=N,
Bawah = 1

If
atas>=bawah

T=atas+bawah/2

Data ketemu A[T]

Selesai

Tugas Struktur Data 29

Anda mungkin juga menyukai