Anda di halaman 1dari 8

Evan Benedict Zaluchu (1306447360)

Akhdan Hilmy Taufiqurrahman (1306368500)


Sakti Naibaho (1306412773)

Algorithm Searching
Pencarian merupakan proses yang mendasar di dalam pemrograman. Pencarian (searching)
merupakan tindakan untuk mendapatkan suatu data dalam sekumpulan data berdasarkan satu
kunci (key) atau acuan data (Sitorus, 2015).

a. Binary Search
Binary search adalah algoritma pencarian untuk data yang terurut. Pencarian dilakukan dengan
cara menebak apakah data yang dicari berada ditengah-tengah data, kemudian membandingkan
data yang dicari dengan data yang ada ditengah. Bila data yang ditengah sama dengan data yang
dicari, berarti data ditemukan. Namun, bila data yang ditengah lebih besar dari data yang dicari,
maka dapat dipastikan bahwa data yang dicari kemungkinan berada disebelah kiri dari data
tengah dan data disebelah kanan data tengah dapat diabai.

Upper bound dari bagian data kiri yang baru adalah indeks dari data tengah itu sendiri.
Sebaliknya, bila data yang ditengah lebih kecil dari data yang dicari, maka dapat dipastikan
bahwa data yang dicari kemungkinan besar berada disebelah kanan dari data tengah. Lower
bound dari data disebelah kanan dari data tengah adalah indeks dari data tengah itu sendiri
ditambah 1. Demikian seterusnya.

Dari animasi binary search yang ada pada soal, dapat dihasilkan analisis sebagai berikut:

Pada step 1, kita langsung melakukan pencarian dari tengah daftar. Yang dicari adalah angka 37.
Karena angka yang ditengah (23) lebih kecil dari 37, maka pencarian ada di kanan 23.
Pada step 2, kita langsung melakukan pencarian dari antara 29 dan 59. Karena angka yang
ditengah daftar (41) lebih besar dari 37, maka pencarian ada di antara 29, 31, dan 37.

Pada step 3, kita langsung melakukan pencarian dari antara 29 dan 37. Karena angka yang
ditengah daftar (31) lebih kecil dari 37, maka pencarian ada di atas 31, dimana satu-satunya
angka yang tersisa adalah 37, dan angka tersebut terletak di kotak 11.

Dengan menggunakan binary search pada 17 kotak, jumlah step yang dilakukan sebanyak 3 kali,
dan jumlah ini termasuk tidak terlalu banyak.

b. Sequential Search
Sequential search adalah proses membandingkan setiap elemen array satu per satu secara
beruntun yang dimulai dari elemen pertama hingga elemen yang dicari ditemukan atau hingga
elemen terakhir dari array. Sequential search dapat dilakukan terhadap elemen array yang
belum terurut atau terhadap elemen array yang terurut (Sitorus, 2015). Dengan kata lain
sequential search akan mencari data dengan cara membandingkannya satu per satu dengan
data yang ada. Prosesnya tentu saja akan singkat jika data yang diolah sedikit, dan akan lama
jika data yang diolah banyak.

Dari animasi binary search yang ada pada soal, dapat dihasilkan analisis sebagai berikut:
Di step awal, kita berada di kotak 0. Kita mencari angka 37, dan ternyata kotak 0 (1) tidak sama
dengan 37. Maka dari itu, pencarian bergerak ke 1 kotak selanjutnya.

Di step 1, kita berada di kotak 1, dan ternyata kotak 1 (3) tidak sama dengan 37. Maka dari itu,
pencarian bergerak ke 1 kotak selanjutnya.

Di step 2, kita berada di kotak 2, dan ternyata kotak 2 (5) tidak sama dengan 37. Maka dari itu,
pencarian bergerak ke 1 kotak selanjutnya.
Pencarian terus gagal, sampai berhenti di kotak 11. Di step 11, dimana kita berada di kotak 11,
ternyata kotak 11 (37) sama dengan 37. Akhirnya, ditemukanlah bahwa angka 37 berada di
kotak 11.

Dengan menggunakan sequential search pada 17 kotak, jumlah step yang dilakukan sebanyak 11
kali, dan jumlah ini termasuk agak banyak.

Dari analisis perbandingan antara binary search dan sequential search, kesimpulan yang dapat
ditarik adalah binary search lebih efisien dibandingkan dengan sequential search karena step
lebih akurat dan tidak jauh dari 3 step, sedangkan sequential search dapat terjadi dalam
beberapa step, bahkan hingga step 16.
Bubble Sort (T(n) = 0.20 ; S(n) = 34)

#include <stdio.h>

int main()
{
int array[100], n, c, d, swap;

printf("Enter number of elements\n");


scanf("%d", &n);

printf("Enter %d integers\n", n);

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


scanf("%d", &array[c]);

for (c = 0 ; c < ( n - 1 ); c++)


{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}

printf("Sorted list in ascending order:\n");

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


printf("%d\n", array[c]);

return 0;
}
Selection Sort (T(n) = 0.20 ; S(n) = 38)

#include <stdio.h>

int main()
{
int array[100], n, c, d, position, swap;

printf("Enter number of elements\n");


scanf("%d", &n);

printf("Enter %d integers\n", n);

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


scanf("%d", &array[c]);

for ( c = 0 ; c < ( n - 1 ) ; c++ )


{
position = c;

for ( d = c + 1 ; d < n ; d++ )


{
if ( array[position] > array[d] )
position = d;
}
if ( position != c )
{
swap = array[c];
array[c] = array[position];
array[position] = swap;
}
}

printf("Sorted list in ascending order:\n");

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


printf("%d\n", array[c]);

return 0;
}