Anda di halaman 1dari 25

ALGORITMA SORTING (ALGORITMA DAN STRUKTUR

DATA)
ALGORITMA SORTING
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari
karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi
algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer
atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah
dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan
algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu
permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang
membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Sedangkan sorting adalah sebuah proses merangkai benda dalam urutan tertentu dan/atau dalam
himpunan yang berbeda, dan oleh karena itu dia memiliki dua arti umum yang berbeda:

1.

pengurutan: merangkai benda yang sejenis, sekelas, dll, dalam urutan yang teratur.

2.

kategorisasi: pengelompokan dan pemberian label kepada benda dengan sifat yang serupa.

algoritma sorting terdiri dari beberapa algoritma seperti Bubble sort, Quick sort, Selection Sort, Insertion Sort,
dan Merge Sort yang dimana setiap jenis sorting ini memiliki perbedaan satu sama lainnya. berikut ini
merupakan pembahasan umum mengenai jenis-jenis atau algoritma sorting yang telah dijelaskan diatas :

A. Bubble Sort
Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah
sepertigelembung air untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara
kerjanyaadalah dengan berulang-ulang melakukan traversal (proses looping) terhadap elemen-elemen struktur
datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan.
Jikaternyata urutannya tidak sesuai dengan pesanan,maka dilakukan pertukaran (swap). Algoritma sortingini
disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untuk
mengoperasikan elemennya.

Algoritma Bubble Sort


Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data,
dengan elemen-elemennya adalah T1, T2, T3, , TN-1,TN, maka:
1.

Lakukan traversal untuk membandingkan dua elemen berdekatan. Traversal ini dilakukan dari

belakang.
2.

Jika elemen pada TN-1 > TN , maka lakukan pertukaran (swap). Jika tidak, lanjutkan ke proses

traversal berikutnya sampai bertemu dengan bagian struktur data yang telah diurutkan.
3.

Ulangi langkah di atas untuk struktur data yang tersisa.

B. Selection Sort
Algoritma sorting sederhana yang lain adalahSelection Sort. Ide dasarnya adalah melakukan beberapa
kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang
paling kecil di antara elemenelemenyang belum urut, disimp
an indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan
elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang
paling. besar yang disimpan indeksnya kemudian ditukar.

Algoritma Selection Sort


Algoritma selection sort dapat dirangkum sebagaiberikut:

1.

Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. Jika ascending,

maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka temukan nilai yang
paling maksimum.
2.

Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang belum diurutkan.

3.

Ulangi langkah di atas untuk bagian struktur datayang tersisa.

C. Insertion Sort
Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi
insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang
tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yang telah di-sorting
dan bagian yang belum di-sorting.

Algoritma Insertion Sort


Algoritma Insertion Sort dapat dirangkum sebagai berikut
1.

Simpan nilai Ti kedalam variabel sementara, dengan i = 1.

2.

Bandingkan nilainya dengan elemen sebelumnya.\Jika elemen sebelumnya (Ti-1) lebih besar nilainya

daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1).
3.

Lakukan terus poin ke-tiga, sampai Ti-1 Ti.

4.

Jika Ti-1 Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya.

5.

Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu).

D. Merge Sort
Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma
algoritma divide and conquer (kurang lebih berarti: bagi dan atasi). Hal ini dikarenakan algoritma ini
melakukan pembagian struktur data sebelum kemudian dioperasi satu per satu. Intinya, algoritma ini
menggunakan dua ide utama sebagai berikut,
1.

Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan daripada sebuah list

yang besar.
2.

Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yangl ebih

sedikit daripada membentuk sebuah list terurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali
traversal untuk masing-masing list jika keduanya sudahterurut.

\
Algoritma Merge Sort
Algoritma Merge Sort sederhananya, dapat ditulis berikut:
1.

Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih panjang satu elemen.

2.

Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.

3.

Gabung 2 sublist kembali menjadi satu list terurut.

E. Quick Sort
Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960
ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif,
dan termasuk paradigma algoritma divide and conquer.

Algoritma Quick Sort


Algoritma ini terdiri dari 4 langkah utama:
1.

Jika struktur data terdiri dari 1 atau 0 elemen yang harus diurutkan, kembalikan struktur data itu apa

adanya.
2.

Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros). (Biasanya elemen yang

paling kiri.)
3.

Bagi struktur data menjadi dua bagian satu dengan elemen-elemen yang lebih besar daripada pivot

point, dan yang lainnya dengan elemen-elemen yang lebih kecil dari pada pivot point.
4.

Ulangi algoritma secara rekursif terhadap kedua paruh struktur data.

KESIMPULAN
Algoritma yang mudah dalam hal implementasi adalah Bubble Sort, Selection Sort, dan Insertion Sort.
Ketiganya memiliki kompleksitas O(n2). Di antara algoritma ini, yang paling effisien adalah Insertion
Sort. Algoritma yang lebih mangkus adalah MergeSort dan Quick Sort dengan kompleksitasnya adalah O(n
log n). Adapun yang paling mangkus dari lima algoritma ini adalah Quick Sort.

Bubble Sort, Selection Sort, dan Shell Sort


Sorting bisa didefinisikan sebagai suatu pengurutan data yang sebelumnya
disusun secara acak, sehingga menjadi tersusun secara teratur menurut
aturan tertentu. sorting yang kita terapkan menggunakan tipe data array agar
pemahaman serta pengimplementasiannya lebih
mudah
Pada umumnya metode yang digunakan untuk sorting adalah :

1. Buble\Exchange sort
2. Selection sort
3. Shell Sort
4. Quick sort

Bubble/Exchange sort
Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergera/berpindah ke posisi
yang tepat , seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble sort mengurutkan data
dengan cara membandingkan elemen sekarang dengan elemen berikutnya. jika elemen sekarang lebih
besar dari elemen berikutnya maka elemen tersebut ditukar (untuk pengurutan ascending) jika elemen
sekarang lebih kecil daripada elemen berikutnya, maka kedua elemen tersebut ditukar (untuk
pengurutan descending). algoritma ini seolanh olah menggeser satu per satu elemen dari kenan ke kiri
atau kiri ke kanan. tergantung jenis pengurutannya. Ketika suatu proses telah selesai, maka bubble sort
akan mengalami proses, demikian seterusnya. Bubble sort berhenti jika seluruh array telah diperiksa dan
tidak ada pertukaran lagi yang bisa dilakukan,serta tercapai pengurutan yang telah diinginkan

Contoh pengurutan data yang dilakukan dengan metode bubble sort sebagai berikut :
Proses 1 :
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8

Pengecekan dimulai dari data yang paling akhir, kemudian dibandingkan dengan data di depannya,jika
data didepannya lebih besar maka akan di tukar.

Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8
pengecekan dilakukan sampai dengan data ke-2 karena data pertama pasti sudah paling kecil.
Proses 3 :

2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15
Proses 4 :
2 3 8 22 10 15
2 3 8 22 15 10
2 3 8 15 22 10
Proses 5 :
2 3 8 15 22 10
2 3 8 15 10 22
Pengurutan berhenti.

Contoh Program :
#include
#include
#include
bubble_acak()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
srand(time(NULL));
for (i=0; i
arr[i] = rand() %1000;
//output nilai" array
clrscr();
cout<<"====== array ======"<

cout<<"angka angkanya :"<


for (i=0; i
cout<
//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<
getch();
}
bubble_manual()
{
clrscr();
int arr[1000];

int x, i; //untuk array


int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
for (i=0; i
{
cout<<"masukkan angka ke-"<
cin>>arr[i];
}
//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<
//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];

arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<
//mission complete
getch();
}
main ()
{
int pilih;
char ulang;
do
{
clrscr ();
cout<<"tekan 1 : bilangan yang disorting dimasukan secara acak"<
cout<<"tekan 2 : bilangan yang disorting dimasukan secara manual"<
cout<<"masukkan pilihan : "; cin>>pilih;
switch (pilih)
{
case 1:
bubble_acak();
break;
case 2:
bubble_manual();
break;

default:
clrscr();
cout<<"\"maaf\""<
cout<<"\"pilihan yang dimasukkan salah\"";
break;
}
cout< "; cin>>ulang;
}
Dalam Procedure Pascal :
Procedure Bubble(Var Temp : Data; JmlData : Integer);
Var I,J : Integer;
Begin
For I:=2 To JmlData Do
For J:=JmlData DownTo I Do
If Temp[J] < Temp[J-1] Then
{Untuk Descending
>}
SWAP(Temp[J], Temp[J-1]);
End;

Dalam Procedure SWAP :


Var Temp : Char;
Begin
Temp := A;
A := B;
B := Temp;
End;

Selection Sort
Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil. kemudian dilakukan
penukaran dengan elemen ke-I. Secara singkat metode ini bisa dijelaskan sebagai berikut. Pada langkah
pertama, dicari data yang terkecil dari data pertama sampai terakhir. Kemudian data tersebut kita tukar
dari data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding
dengan data lain. Pada langkah kedua, data terkecil kita cari mulai dari data kedua sampai data terakhir.
Data terkecil yang kita peroleh kita tukar dengan data kedua. Demikian seterusnya sampai seluruh data
terurut.

Contoh dari proses sorting dengan menggunakan metode Selection sort :

Dalam Procedure Pascal :


Procedure Selection(Var Temp : Data; JmlData : Integer);
Var I,J, Lok : Integer;
Begin
For I:=1 To JmlData-1 Do
Begin
Lok:=I;
For J:=I+1 To JmlData Do
If Temp[Lok] > Temp[J] Then Lok:=J;
SWAP(Temp[I], Temp[Lok]);
End;
End;

Shell Sort
Metode
elemen
berikut.
dengan

ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua
yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai
Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dan kita bandingkan
elemen pada jarak tertentu dari elemen pertama tersebut. Kemudain elemen kedua kita

bandingkan dengan eleen lain dengan jarak yang sama seperti jarak yang sama seperti diatas. Demikian
seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah
yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak
sudah sama dengan satu.

Contoh dari proses Sorting dengan menggunakan metode Shell Sort :

Dalam Procedure Pascal :


Procedure Shell(Var Temp : Data; JmlData : Integer);
Var I,J, Jarak : Integer;
Begin
Jarak := JmlData Div 2;
While Jarak > 0 Do
Begin
For I:=1 To JmlData-Jarak Do
Begin
J := I + Jarak;
If Temp[I] > Temp[J] Then
SWAP(Temp[I], Temp[Lok]);
End;
Jarak := Jarak Div 2;
End;

End;

Quick Sort
Metode ini dikembangkan oleh CAR Hoare. Secara garis besar metode ini dijelaskan sebagai berikut.
Misalnya kita ingin mengurutkan data A yang membunyai N elemen. Kita pilih sembarang elemen dari
data tersebut, biasanya elemen pertama, misalnya X. Kemudain semua elemen tersebut disusun dengan
menempatkan X pada posisi J sedemikian rupa shingga elemen ke 1 sampai ke J-1 mempuyai nilai lebih
besar dari X. Sampai berikutnya diulang untuk setiap sub data.

Contoh dari proses Soring dengan menggunakan metode Quick Sort

Dalam Procedure Pascal :

Procedure Quick(Var Temp : Data; Awal, Akhir : Integer);


Var I,J : Integer;
Procedure ATUR;
Begin
I:=Awal +1;
J:= Akhir;
While Temp[I] < Temp[Awal] Do Inc(I);

While Temp[J] > Temp[Awal] Do Dec(J);


While I < J Do
Begin
SWAP(Temp[I], Temp[J]);
While Temp[I] < Temp[Awal] Do Inc(I);
While Temp[J] > Temp[Awal] Do Dec(J);
End;
SWAP(Temp[Awal], Temp[J]);
End;
Begin
If Awal < Akhir Then
Begin
ATUR;
Quick(Temp, Awal, J-1);
Quick(Temp,J+1,Akhir);
End;
End;

SELECTION SORT
POSTED BY SOVYAN NURZAMAN ON 04.04 1 COMMENT

SELECTION
SORT
Pengertian dari selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah
diketahui,
dan
meletakkannya
di
posisi
tersebut
setelah
data
tersebut
ditemukan,
Selection Sort Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan
elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang
maka
dicatat
posisinya
dan
kemudian
ditukar.
Pengurutan data dalam struktur data sangat penting untuk data yang beripe data numerik ataupun
karakter.Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun)
Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan
suatu
pola
tertentu,
sehingga
tersusun
secara
teratur
menurut
aturan
tertentu.
Contoh:
Data
Acak
:
5
6
8
1
3
25
10
Ascending
:
1
3
5
6
8
10
25
Descending
:
25
10
8
6
5
3
1
Konsep Selection Sort Algoritma pengurutan sederhana salah satunya adalah Selection Sort. Ide dasarnya

adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting
ascending
(menaik),
elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya, kemudian
dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling
depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang
disimpan
indeksnya
kemudian
ditukar.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada
algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut:
1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
2.
Menukarkan
nilai
ini
dengan
elemen
pertama
list
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua. Secara efisien kita
membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun
dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.
Simulasi Selection Sort Untuk lebih jelasnya, perhatikanlah simulasi Selection Sort Ascending berikut
dengan
menggunakan
larik
5
1
43
27
6
18
33
Dalam satu kali, ditentukan elemen yang paling kecil di dalam bagian list yang belum urut
. Elemen yang paling kecil ini, diwarnai merah . Untuk bagian larik yang telah diurutkan diberi warna
kuning.

43

27

18

33

43

27

18

33

43

27

18

33

27

43

18

33

18

43

27

33

18

27

43

33

18

27

33

43

Kompleksitas Selection Sort Algoritma di dalam Selection Sort terdiri dari kalang bersarang. Dimana
kalang tingkat pertama (disebut pass) berlangsung N-1 kali. Di dalam kalang kedua, dicari elemen
dengan nilai terkecil. Jika didapat, indeks yang didapat ditimpakan ke variabel min. Lalu dilakukan proses
penukaran Begitu seterusnya untuk setiap Pass. Pass sendiri makin berkurang hingga nilainya menjadi
semakin
kecil.
Stabilitas Selection Sort Selection Sort ini pada dasarnya merupakan algoritma sorting yang tidak stabil,
namun
dapat
diubah
menjadi
stabil
pada
kasus
tertentu
Algoritma sorting yang stabil akan mampu memanfaatkan relatifitas antar record melalui definisi di tiaptiap keys yang dimiliki oleh record tersebut. Misalkan ada dua record R dan S dengan key yang sama dan
dengan ketentuan R muncul sebelum S, maka pada hasil output akan muncul R sebelum S.

Namun ketika terdapat elemen yang sama (tidak dapat dibedakan) pada umumnya terdapat pada tipe
data integer,stabilitas akan kembali di utamakan.

METODE SEARCHING (Sequential Search & Binary Search)


Searching adalah metode pencarian informasi dalam suatu aplikasi, dengan suatu
kunci( key ). Pencarian diperlukan untuk mencari informasi khusus dari table pada saat lokasi yang pasti
dari informasi tersebut sebelumnya tidak diketahui. Pencarian selalu dinyatakan dengan referensi pada
adanya sekelompok data yang tersimpan secara terorganisasi, kelompok data tersebut kita sebut table.
Pada metode searching (pencarian) ada 2 teknik yang digunakan yaitu : Pencarian sekuensial
(sequential search) dan Pencarian biner (Binary search).
1. Pencarian sekuensial (sequential search)
Pencarian sekuensial (sequential search) atau sering disebut pencarian linier menggunakan prinsip
sebagai berikut : data yang ada di bandingkan satu persatu secara berurutan dengan yang dicari.
Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data.
Pada setiap perulangan , di bandingkan data ke-i dengan yang dicari. Apabila sama , berarti data telah
ditemukan . Sebaliknya apabila sampai akhir pengulangan , tidak ada yang sama berarti data tidak ada.
2. Pencarian Biner (Binary Search)
Salah satu syarat pencarian biner (binary search) dapat dilakukan adalah data sudah dalam keadaan
terurut. Dengan kata lain, apabila data belum dalam keadaan terurut , pencarian biner tidak dapat
dilakukan . Dalam kehidupan sehari-hari, sebenarnya kita juga serig menggunakan pencarian biner.
Misalnya saat kita ingin mencari suatu kata dalam kamus.
Langkah dalam pencarian biner adalah :
1. Mula-mula diambil dari posisi awal=1 dan posisi akhir = n
2. Kemudian kita cari posisi data tengah dengan rumus posisi tengah = (posisi awal + posisi akhir ) div 2
3. Kemudian data yang di cari dibandingkan dengan data tengah
a. Jika sama, data ditemukan, Proses selesai
b. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah -1,
c. Jika lebih besar , proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1.
4. Ulangi langkah kedua hingga data ditemukan , atau tidak ditemukan.
5. Pencarian biner ini akan berakhir jika data ditemukan posisi awal lebih besar dari pada posisi akhir. Jika
posisi awal sudah lebih besar dari posisis akhir berarti data tidak diketemukan.

1.2 LANDASAN TEORI


Searching adalah cara pencarian data dengan menelusuri kembali data-data tersebut. Data yang
dicari dapat berupa array dalam memory atau bisa juga pada file di external storage.
Searching sendiri dapat dibagi menjadi 3 bagian.
1. Sequential Search
2. Binary Search
Penjelasan dari kedua jenis searching tersebut adalah sbb:
1. Sequential Search
Sequential search adalah suatu cara pencarian data dalam array 1 dimensi. Data yang dicari akan
ditelusuri dalam semua elemen-elemen aray dari awal sampai akhir, dan data tersebut tidak perlu
diurutkan terlebih dahulu.
Dalam sequential search terdapat 2 kemungkinan yang akan terjadi dalam waktu pencarian data,

yaitu :
- kemungkinan terbaik (best case)
hal ini terjadi jika data yang dicari terletak pada indeks array terdepan, sehingga waktu yang
dibutuhkan untuk mencari data sedikit.
- kemungkinan terburuk (worst case)
hal ini terjadi jika data yang dicari terletak pada indeks array terakhir, sehingga waktu yang
dibutuhkan untuk mencari data sangat lama.
Dalam pencarian data menggunakan sequential search, peningkatan efisiensi pencarian dapat
dilakukan dengan cara menghentikan looping apabila data yang dicari sudah ketemu dengan
menggunakan BREAK.
Disebut juga sebagai metode pencarian urut adalah metode pencarian yang paling mudah.
Bayangkan saja jika anda dihadapkan pada sebuah rak buku, dan anda diberi tugas untuk mencari
sebuah buku dari rak tersebut. Sudah tentu anda akan mulai mencarinya satu persatu entah itu
dari atas atau dari bawah sampai buku yang dimaksud ketemu.
Singkatnya sequential search memiliki proses sebagai berikut:
Tentukan banyaknya data yang akan di olah, missal banyak data adalah N.
Tentukan data apa yang akan dicari, missal data yang akan dicari adalah C.
Deklarasikan sebuah counter untuk menghitung banyak data yang ditemukan, missal counternya
adalah K.
Inisialisasikan K =0
Lakukanlah perulangan sebanyak N kali
Dalam tiap proses perulangan tersebut periksalah apakah data yang sedang
diolah sama dengan data yang dicari.
Jika ternyata sama K=K+1
Jika tidak, lanjutkan proses perulangan .
Setelah proses perulangan berhenti, periksalah nilai K.
Jika nilai K lebih dari 0, artinya data yang dicari ada dalam data /array dan tampilkan nilai K ke
layer sebagai jumlah data yang ditemukan.
Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data / array dan tampilkan ke
layar bahwa data tidak ditemukan
Proses selesai.
Dapat disimpulkan bahwa sequential search, akan mencari data dengan cara membandingkannya
satu-persatu dengan data yang ada. Prosesnya tentu saja akan singkat jika data yang diolah
sedikit, dan akan lama jika data yang diolah banyak. Disarankan proses ini digunakan pada jumlah
data yang sedikit saja.
2. Binary Search
Binary search adalah teknik pencarian data dengan cari membagi dua data setiap kali proses
pengurutan.

Cara pencarian biner :


- data diambil dari posisi 1 sampai posisi N
- lalu cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2
- kemudian data yang dicari dibandingkan dengan data tengah, apakah data itu lebih besar atau
lebih kecil.
- Jika lebih besar, maka (posisi awal = posisi tengah + 1)
- Jika lebih kecil, maka (posisi akhir = posisi tengah 1)
- Jika data yang dicari = data tengah, maka KETEMU.
CONTOH DAN CARA KERJA BINARY SEARCH
Di bawah ini adalah kuncikunci carilah kunci 39 dengan mengunakan algorithm Binary Search.
[13, 16, 18, 27, 28, 29, 38, 39, 53].
123456789
File ini dinamakan File Sequential (secara berurutan).
Cara penyelesaian.
Bila di cari kunci 39 maka ;
Bila terendah = 1, dan tertinggi = 9,
maka 1 + 9 = 10 , lalu 10 / 2 = 5.
1. Nomor urut 5, adalah kunci 28 , tapi 28 < 39,
[13, 16, 18, 27, 28, 29, 38, 39, 53].
maka terendah = 5 , dan tertinggi = 9,
maka : 5 + 9 = 14
14 / 2 = 7.
2. Nomor urut 7 adalah 38 , tapi 38 8,5 8
3. Nomor urut 8 adalah kunci 39 , dimana kunci 39 = 39.
[13, 16, 18, 27, 28, 29, 38, 39, 53]
1.3 RUMUSAN MASALAH
Buatlah penjelasan untuk setiap baris kode program sequential.java dan binarysearch.java
diatas.Berikan uraian singkat untuk setiap metode searching diatas beserta algoritmanya
BAB 2
HASIL DAN PEMBAHASAN
1. SEQUENTIEL SEARCH
ALGORITMA SEQUENTIAL SEARCH
DEKLARASI
data : array[1..6] tipe integer
bil,i : integer
DESKRIPSI
{Inisialisasi Nilai array yang ingin dicari}
data[1] < 7
data[2] < 5
data[3] < 8

data[4] < 3
data[5] < 10
data[6] < 12
Lakukan perulangan dengan menggunakan for (int i=0;i<intarray.length;i++);
if (data[i] = bil) then
tampikan (angka ketemu = )
else
tampilkan (angka tidak ketemu);
end_if
SOURCE CODE
package javaapplication1;
import java.util.Scanner;
public class Sequential
{
public static void main(String[] args)
{
int j, angka;//input variebel,initialize angka
boolean found=false;
int[] intarray={7,5,8,3,10,12};//memasukkan angka pada array
for (int i=0;i<intarray.length;i++)//lakukan perulangan sekali pada elemen arrray
{
System.out.print(intarray[i]+" ");//for aligment
}
Scanner sc=new Scanner(System.in);
System.out.print("\nMasukkan angka yang ingin dicari = ");//menampilkan angka yang dicari
angka=sc.nextInt();
for (j=0;j<intarray.length;j++)//lakukan perulangan pada array
{
if (intarray[j]==angka)//
{
found=true;//Recursive call
break;//menghentikan pengulangan
}
}
if (found)//menyatakan pernyataan apabila ditemukan
{
System.out.println("angka ketemu = " +intarray[j]);//tampilkan hasil
}
else//jika tidak ditemukan

{
System.out.println("angka tidak ketemu ");//tampilkan hasil
}}}
2. Binary Search
ALGORITMA
{Inisialisasi Nilai array yang ingin dicari}
array ={25,30,35,40,45};
Terendah = 1.
Tertinggi = 5.
While terendah nilai (tengah). Then terendah = tengah + 1.
Else tertinggi = tengah 1.
end
end
end
SOURCE CODE
package javaapplication1;
import java.util.Scanner;
public class BinarySearch {
public static void main (String[] args){
int v, angka;//input variebel,initialize angka
boolean notfound=true;
int[] intarray={25,30,35,40,45};//memasukkan angka pada array
for (int x=0;xbatasAtas)//pernyataan kedua
{
System.out.println(tidak ditemukan +angka);//menampilkan hasil
break;//menghentikan pengulangan
}
else//pernyataan lebih dari satu data
{
if (intarray[posisiSekarang]<angka)//pernyataan ketiga
{
batasBawah = posisiSekarang + 1;//Recursive call
}
else
{
batasAtas = posisiSekarang 1;//Recursive call
}}}}}

CARA PENYELESAIAN BINARY SEARCH DI ATAS


- Prinsip pencarian biner adalah:
Data diambil dari posisi 1 sampai posisi akhir N
Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2
Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah
sama atau lebih kecil, atau lebih besar?
Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi
tengah + 1
Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi
tengah 1
Jika data sama, berarti ketemu.
Contoh data :
Data yang dicari 25
01234
25 30 35 40 45
ABC
Karena 25<35 (data tengah),maka :awal =tengah-1
01234
25 30 35 40 45
A=B=C
Karena 25=25,maka data ketemu
KESIMPULAN
Sequential search lebih efektif jika digunakan pada sekumpulan data yang sedikit, sedangkan
binary search efektif jika digunakan pada sekumpulan data yang berjumlah banyak.
Sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut,
sedangkan binary search harus pada data yang sudah urut.

Binary dan Sequential Search


Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas adalah sebuah algoritma yang
menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang
biasanya didapat dari evaluasi beberapa kemungkinan solusi.Operasi pencarian adalah operasi untuk
menemukan sebuah nilai (data) di dalam sekumpulan nilai yang bertipe sama. Untuk menemukan nilai
yang dicari, instruksi yang paling penting yang harus dilakukan adalah memeriksa jika nilai yang dicari
sama dengan salah satu nilai dalam kumpulan nilai yang dimaksud. Metode pencarian yang
bisa dipergunakan tergantung dari Bagaimana urutan nilai-nilai di dalam kumpulan nilai dan bagaimana
struktur data yang dipergunakan untuk menyusun nilai-nilai tersebut.

SEQUENTIAL SEARCH

Algoritma sequential search adalah salah satu algoritma yang digunakan untuk memecahkan masalah
pencarian data pada suatu data larik/array. Cara kerja dari algoritma ini adalah dengan menelusuri
elemen-elemen array dari awal sampai akhir, dimana data tidak perlu diurutkan terlebih dahulu.
Kemungkinan terbaik(best case) dari algoritma ini adalah jika data yang dicari berada pada elemen array
yang terdepan sehingga waktu yang dibutuhkan untuk pencarian data semakin singkat. Sebaliknya, akan
mencapai kondisi terburuk(wors case) apabila data yang dicari berada pada elemen akhir.

Metode pencarian beruntun atau linear (sequential search) dapat dipergunakan apabila:

1.

Nilai-nilai tersebut belum berurutan.

2.

Nilai-nilai tersebut sudah berurutan, tetapi struktur data yang dipergunakan untuk

menyimpan nilai-nilai tersebut adalah linked list.

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.
Metode pencarian beruntun (sequential) maupun metode pencarian biner (binary search)dapat
dipergunakan, jika:
1.

Nilai-nilai tersebut sudah tersusun secara berurutan.

2.

Nilai-nilai tersebut disusun ke dalam bentuk array atau struktur data sejenis yang masing-

masing nilai tersimpan dalam bagian-bagian yang mempunyai indeks yang unik dan indeksnya
berurutan dari yang paling kecil hingga yang paling besar (bersifat ordinal).

Ilustrasi Binary search:

Anda mungkin juga menyukai