tugas struktur data
TRANSCRIPT
Muhammad Fauzi & Reiza Pahalwan
1
Tugas Struktur Data
~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++
Muhammad Fauzi & Reiza Pahalwan
2
Tugas Struktur Data
= 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();
}
Muhammad Fauzi & Reiza Pahalwan
3
Tugas Struktur Data
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]);
Muhammad Fauzi & Reiza Pahalwan
4
Tugas Struktur Data
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 :
Muhammad Fauzi & Reiza Pahalwan
5
Tugas Struktur Data
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();
}
Muhammad Fauzi & Reiza Pahalwan
6
Tugas Struktur Data
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)
{
Muhammad Fauzi & Reiza Pahalwan
7
Tugas Struktur Data
--(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);
}
Muhammad Fauzi & Reiza Pahalwan
8
Tugas Struktur Data
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.
Muhammad Fauzi & Reiza Pahalwan
9
Tugas Struktur Data
Flowchart :
Mulai
Input data
Int data[],x;
X = data[]/2
Pengurutan
Ascending untuk x1
Pengurutan
Ascending untuk x2
Pengurutan
Ascending dari x1
dan x2
Tampilkan hasil
pengurutan
Selesai
Muhammad Fauzi & Reiza Pahalwan
10
Tugas Struktur Data
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)
{
Muhammad Fauzi & Reiza Pahalwan
11
Tugas Struktur Data
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 :
Muhammad Fauzi & Reiza Pahalwan
12
Tugas Struktur Data
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
Muhammad Fauzi & Reiza Pahalwan
13
Tugas Struktur Data
- Flowchart metode Quic Sort non rekursif
Mulai
Input data
Int data[],x;
X = data[]/2
Pengurutan
Ascending untuk x1
Pengurutan
Ascending untuk x2
Pengurutan
Ascending dari x1
dan x2
Tampilkan hasil
pengurutan
Selesai
Muhammad Fauzi & Reiza Pahalwan
14
Tugas Struktur Data
- 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;
Muhammad Fauzi & Reiza Pahalwan
15
Tugas Struktur Data
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 :
Muhammad Fauzi & Reiza Pahalwan
16
Tugas Struktur Data
6. a. Flowchart
Flowchart Metode pengurutan langsung :
Mulai
Input data (A)
Int A, J,T;
Tampilkan hasil
pengurutan (A)
Selesai
T=A[i] A[0]=T J=J-1
if T<A[j]
A[J+1]=A[J] J-J-1
A[J+1]=T
Muhammad Fauzi & Reiza Pahalwan
17
Tugas Struktur Data
Flowchart Metode pengurutan seleksi :
Mulai
Input data (A)
Int A, j,I,Lok;
Lok = l J=I+1
A[lok]>A[j]
Lok = j
A[lok]=A[I]
Selesai
Tampilkan hasil
pengurutan (A)
Muhammad Fauzi & Reiza Pahalwan
18
Tugas Struktur Data
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);
}
Muhammad Fauzi & Reiza Pahalwan
19
Tugas Struktur Data
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]);
}
}
Muhammad Fauzi & Reiza Pahalwan
20
Tugas Struktur Data
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 :
Muhammad Fauzi & Reiza Pahalwan
21
Tugas Struktur Data
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 : ");
Muhammad Fauzi & Reiza Pahalwan
22
Tugas Struktur Data
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
Muhammad Fauzi & Reiza Pahalwan
23
Tugas Struktur Data
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);
Muhammad Fauzi & Reiza Pahalwan
24
Tugas Struktur Data
}
//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();
}
Muhammad Fauzi & Reiza Pahalwan
25
Tugas Struktur Data
Hasil output programnya : Flowchart Metode interpolation search dan metode sequential dengan sentinel search - Flowchart metode interpolation search
Mulai
Input data (X)
Int array[],N,ix;
i =0;
If array[i]!=x
I<N
i+1
Data ketemu
Selesai
Muhammad Fauzi & Reiza Pahalwan
26
Tugas Struktur Data
Flowchart metode interpolation search :
Mulai
Input data dicari
(A)
Int A,high,low,
N,pos;
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
Cetak hasil
Selesai
If [pos] = A
If [pos] > A
If [pos] < A
Tm + 1
High =pos-1
Low=pos + 1
Muhammad Fauzi & Reiza Pahalwan
27
Tugas Struktur Data
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++;
}
Muhammad Fauzi & Reiza Pahalwan
28
Tugas Struktur Data
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
Input data (X)
Int array[],N,ix;
i =0;
If array[i]!=x
Data ketemu
Selesai
Muhammad Fauzi & Reiza Pahalwan
29
Tugas Struktur Data
Flowchart Metode Binary Search :
Mulai
Input data (A)
Int atas,bawah,
N,T,A;
Atas=N, Bawah = 1
If
atas>=bawah
T=atas+bawah/2
A[T]
Data ketemu
Selesai