You are on page 1of 6

Nanda Ayu Wiyanti - 1401164882

Jawaban Tugas 13

1.

Simulasikan algoritma binary search terhadap kumpulan data ini


[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]

Sks
42
58
32
62
40
48
36
12
32
36
16
16
20
24
20
80
16
16
20

NIM
0800100001
0800200002
0800600006
0800100001
0800300003
0800400004
0800200002
0800700007
0800400004
0800800008
0800200002
0800600006
0800300003
0800700007
0800500005
0800100001
0800800008
0800400004
0800100001

IPK
3.23
2.25
3.17
2.90
3.34
2.54
2.47
1.78
2.72
2.23
2.89
3.34
3.16
1.87
3.57
3.04
2.45
2.93
2.78

Semester
2004 B
2005 B
2005 A
2005 A
2004 B
2005 A
2005 A
2004 B
2004 B
2004 B
2004 A
2004 A
2004 A
2005 A
2005 A
2005 A
2004 A
2004 A
2004 A

untuk mencari data dengan key:


a. 0800700007, 2005 B
b. 0800500015, 2004 B
Jawab:
Langkah pertama, data di sorting terlebih dahulu berdasarkan NIM
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]

SKS
42
62
80
20
58
36
16
40
20
48
32
16
20
32
16
12
24
36
16

NIM
0800100001
0800100001
0800100001
0800100001
0800200002
0800200002
0800200002
0800300003
0800300003
0800400004
0800400004
0800400004
0800500005
0800600006
0800600006
0800700007
0800700007
0800800008
0800800008

IPK
3.23
2.90
3.04
2.78
2.25
2.47
2.89
3.34
3.16
2.54
2.72
2.93
3.57
3.17
3.34
1.78
1.87
2.23
2.45

SEMESTER
2004 B
2005 A
2005 A
2004 A
2005 B
2005 A
2004 A
2004 B
2004 A
2005 A
2004 B
2004 A
2005 A
2005 A
2004 A
2004 B
2005 A
2004 B
2004 A

Algoritma & MOOP (T0456)


1

Nanda Ayu Wiyanti - 1401164882

a. Key = 0800700007, 2005 B


No
1
2
3
4
5
6

Low
0
10
14
14
15
15

b.
No
1
2
3
4
5
6

High
18
18
18
15
15
14

Mid
(0+18)/2 = 9
(10+18)/2 = 14
(14+18)/2 = 16
(14+15)/2 = 14
(15+15)/2 = 15

Keterangan
Data[9] = 0800400004,2005 A < Key, maka low = mid+1
Data[14] = 0800600006,2004 B < Key, maka low = mid+1
Data[16] = 0800700007,2005 A > Key, maka high = mid-1
Data[14] = 0800600006,2004 B < Key, maka low = mid+1
Data[15] = 0800700007,2004 B > Key, maka high = mid-1
Karena low > high, maka data key tidak ada

Key = 0800500015, 2004 B


Low
0
10
10
12
13
13

High
18
18
13
13
13
12

Mid
(0+18)/2 = 9
(10+18)/2 = 14
(10+13)/2 = 11
(12+13)/2 = 12
(13+13)/2 = 13

Keterangan
Data[9] = 0800400004,2005 A < Key, maka low = mid+1
Data[14] = 0800600006,2004 B > Key, maka high = mid-1
Data[11] = 0800400004,2004 A < Key, maka low = mid+1
Data[12] = 0800500005,2005 A < Key, maka low = mid+1
Data[13] = 0800600006,2005 A > Key, maka high = mid-1
Karena low > high, maka data key tidak ada

Algoritma & MOOP (T0456)


2

Nanda Ayu Wiyanti - 1401164882

2.

Simulasikan binary search terhadap kumpulan data ini untuk mencari PRN204,
HDD770, CDR045, MT007
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]

Kode
PRN204
MTB512
HDD630
PRN202
CDR054
MNT308
MTB348
HDD720
CDR045
MNT700
RAM114

Nama
HP Laserjet 1220
ABIT KT7-A RAID
Maxtor 160 GB
HP Laserjet 4100N
Lite On 52X
Viewsonic E70
ASUS A7V266:
Seagate 18GB Barracuda
Aopen 48x
LG Flatron 775FT
Visipro 512 MB

Harga
468
102
285
1456
24
192
140
181
71
225
68

Jawab :
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]

a.
No
1
2
3

b.

c.

High
10
10
10

Mid
(0+10)/2 = 5
(6+10)/2 = 8
(9+10)/2 = 9

Keterangan
Data[5] = MNT700 < Key, maka low = mid+1
Data[8] = PRN202 < Key, maka low = mid+1
Data[9] = PRN204 == Key, ketemu pada index = 9

High
10
4
4
4
3

Mid
(0+10)/2 = 5
(0+4)/2 = 2
(3+4)/2 = 3
(4+4)/2 = 4

Keterangan
Data[5] = MNT700 > Key, maka high = mid-1
Data[2] = HDD630 < Key, maka low = mid+1
Data[3] = HDD720 < Key, maka low = mid+1
Data[4] = MNT308 > Key, maka high = mid-1
Karena low > high, maka data key tidak ada

Mid
(0+10)/2 = 5
(0+4)/2 = 2
(0+1)/2 = 0

Keterangan
Data[5] = MNT700 > Key, maka high = mid-1
Data[2] = HDD630 > Key, maka high = mid-1
Data[0] = CDR045 == Key, ketemu pada index = 0

Mid
(0+10)/2 = 5
(6+10)/2 = 8
(6+7)/2 = 6

Keterangan
Data[5] = MNT700 < Key, maka low = mid+1
Data[8] = PRN202 > Key, maka high = mid-1
Data[6] = MTB348 > Key, maka high = mid-1

CDR045
Low
0
0
0

d.
No
1
2
3

HARGA
71
24
285
181
192
225
140
102
1456
468
68

HDD770
Low
0
0
3
4
4

No
1
2
3

NAMA
Aopen 48x
Lite On 52X
Maxtor 160 GB
Seagate 18GB Barracuda
Viewsonic E70
LG Flatron 775FT
ASUS A7V266:
ABIT KT7-A RAID
HP Laserjet 4100N
HP Laserjet 1220
Visipro 512 MB

PRN204
Low
0
6
9

No
1
2
3
4
5

KODE
CDR045
CDR054
HDD630
HDD720
MNT308
MNT700
MTB348
MTB512
PRN202
PRN204
RAM114

High
10
4
1

MT007
Low
0
6
6

High
10
10
7

Algoritma & MOOP (T0456)


3

Nanda Ayu Wiyanti - 1401164882


4

Karena low > high, maka data key tidak ada

3.

Buatlah program untuk mencari data dengan algoritma sequential search dengan
data pada soal nomor 2 di atas.
Jawab :
#include <iostream.h>
#include <string>
#include <cstring>
inline int SequentialSearch(char kode[11][7], char key[7])
{
int idx=(-1);
for (int i=0; i<=10; i++)
{
if ( strcmp(key,kode[i])==0)
{
idx=i;
}
}
return idx;
}
int main()
{
char key[7]="123456";
int val;
char
kode[11]
[7]={"CDR045","CDR054","HDD630","HDD720","MNT308","MNT700","MTB348","MT
B512","PRN202","PRN204","RAM114"};
char nama[11][23]={"Aopen 48x","Lite On 52X","Maxtor 160
GB","Seagate 18GB Barracuda","Viewsonic E70","LG Flatron 775FT","ASUS
A7V266","ABIT
KT7-A
RAID","HP
Laserjet
4100N","HP
Laserjet
1220","Visipro 512 MB"};
float harga[11]={71,24,285,181,192,225,140,102,1456,468,68};
for (int i=0; i<=10;i++)
{
cout<<kode[i]<<" "<<nama[i]<<" "<<harga[i]<<endl;
}
cout<<"\nMasukkan key : ";
cin>>key;
val=SequentialSearch(kode, key);
if (val==-1)
{
cout<<"\nData tidak ditemukan";

Algoritma & MOOP (T0456)


4

Nanda Ayu Wiyanti - 1401164882


}
else
{
cout<<"\nData ditemukan : ";
cout<<"\nKode
: "<<kode[val];
cout<<"\nNama
: "<<nama[val];
cout<<"\nHarga : "<<harga[val]<<endl;
}
system("pause");
}

4. Buatlah program untuk mencari data dengan algoritma binary search dari soal nomor 1 di atas.
Jawab :
#include
#include
#include
#include
#include

<iostream.h>
<string>
<cstring>
<stdio.h>
<conio.h>

inline int BinarySearch(char nim[19][10],char


key1[10],char key2[6], int low, int height)
{
int mid,idx=(-1);
while (low <= height)
{
char append1[16]="";
char append2[16]="";
mid = (int)(low + height)/2;
strcat(append1,nim[mid]);
strcat(append1,semester[mid]);
strcat(append2,key1);
strcat(append2,key2);
if (strcmp(append2,append1)==0)
{
idx=mid; return idx;
}
if (strcmp(append2,append1)>0)
{
low = mid + 1;
}
if (strcmp(append2,append1)<0)
{
height = mid - 1;
}
}
return idx;
}

semester[19][7],

char

int main()
{
char key1[10]="123456789";
char key2[7]="123456";
int val;

Algoritma & MOOP (T0456)


5

Nanda Ayu Wiyanti - 1401164882


char
nim[19]
[10]={"800100001","800100001","800100001","800100001","800200002","80020000
2","800200002","800300003","800300003","800400004","800400004","800400004",
"800500005","800600006","800600006","800700007","800700007","800800008","80
0800008"};
char
semester[19]
[7]={"2004A","2004B","2005A","2005A","2004A","2005A","2005B","2004A","2004B
","2004A","2004B","2005A","2005A","2004A","2005A","2004B","2005A","2004A","
2004B"};
float
ipk[19]={2.78,3.23,2.90,3.04,2.89,2.47,2.25,3.16,3.34,2.93,2.72,2.54,3.57,3
.34,3.17,1.78,1.87,2.45,2.23};
float
sks[19]={20,42,62,80,16,36,58,20,40,16,32,48,20,16,32,12,24,16,36};
cout<<"
NIM
Semester IPK SKS\n";
for (int i=0;i<=18;i++)
{
cout<<i<<"
"<<nim[i]<<"
"<<semester[i]<<"
"<<ipk[i]<<"
"<<sks[i]<<endl;
}
cout<<"Masukkan NIM
: "; cin>>key1;
cout<<"Masukkan Semester : "; cin>>key2;
val=BinarySearch(nim,semester,key1,key2, 0, 18);
if (val== (-1))
{
cout<<"\nData tidak ada\n";
}
else
{
cout<<"NIM
: "<<nim[val]<<endl;
cout<<"Semester
: "<<semester[val]<<endl;
cout<<"IPK
: "<<ipk[val]<<endl;
cout<<"SKS
: "<<sks[val]<<endl;
}
system("pause");
}

Algoritma & MOOP (T0456)


6

You might also like