Vous êtes sur la page 1sur 8

I.

INSERTION SORT
Salah satu algoritma sorting yang paling sederhana adalah insertion
sort. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu.
Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort
bekerja dalam pengurutan kartu. Anggaplah anda ingin mengurutkan satu
set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.
Seluruh kartu diletakkan pada meja, sebutlah meja ini sebagai meja
pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian kita
mempunyai meja yang lain, meja kedua, dimana kartu yang diurutkan
akan diletakkan. Ambil kartu pertama yang terletak pada pojok kiri atas
meja pertama dan letakkan pada meja kedua. Ambil kartu kedua dari
meja pertama, bandingkan dengan kartu yang berada pada meja kedua,
kemudian letakkan pada urutan yang sesuai setelah perbandingan. Proses
tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah
diletakkan berurutan pada meja kedua.
Algoritma insertion sort pada dasarnya memilah data yang akan
diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan
yang sudah diurutkan (meja kedua). lemen pertama diambil dari bagian
array yang belum diurutkan dan kemudian diletakkan sesuai posisinya
pada bagian lain dari array yang telah diurutkan. !angkah ini dilakukan
secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian
array yang belum diurutkan.
# Algoritma
void insertionSort(Object array[], int startIdx, int endIdx) {
for (int i = startIdx; i < endIdx; i++) {
}
}
int = i;
for (int j = i + !; j < endIdx; j++) {
if ((("o#$arab%e) array[])&co#$are'o(array[j])()) {
= j;
}
}
s*a$(array[i],array[]);

# Contoh
II. BUBBLE SORT
Pengurutan dengan menggunakan metode bubble sort akan
membandingkan elemen sekarang
dengan elemen berikutnya. "ika elemen sekarang lebih besar daripada elemen
berikutnya maka elemen terseut ditukar. "ika anda perhatikan, maka setiap
langkah dari algoritma ini akan menggeser satu persatu elemen dari kanan
ke kiri. "ika barisan bilangan tidak disusun secara horisontal melainkan #ertikal,
akan terlihat seperti gelembung $ gelembung bubble yang naik dari dasar
akuarium. %leh karena itu algoritma ini disebut dengan &ubble Sort.
'iberi nama (&ubble) karena proses pengurutan secara berangsur*
angsur bergerak +berpindah ke posisinya yang tepat, seperti gelembung yang
keluar dari sebuah gelas bersoda. &ubble Sort mengurutkan data dengan cara
membandingkan elemen sekarang dengan elemen berikutnya. Pengurutan
Ascending ,"ika elemen sekarang lebih besar dari elemen berikutnya maka
kedua elemen tersebut ditukar. Pengurutan 'escending, "ika elemen sekarang
lebih keil dari elemen berikutnya, maka kedua elemen tersebut ditukar.
Algoritma ini seolah*olah menggeser satu per satu elemen dari kanan ke
kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah
selesai, maka bubble sort akan mengulangi proses, demikian seterusnya. Kapan
berhentinya- &ubble sort berhenti jika seluruh array telah diperiksa dan tidak
ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah
diinginkan.
.ahapan yang dilakukan di dalam &ubble Sort adalah sebagai berikut ,
/. Pengecekkan dapat dilakukan dari data yang paling awal maupun dari
data yang paling akhir. "ika pengecekkan dimulai dari data yang paling
awal, maka data yang paling awal tersebut kemudian akan dilakukan
pengecekkan dengan data yang ada sesudahnya. "ika ternyata data yang
ada di awal tersebut lebih kecil, maka data tersebut akan ditukar. 0aka
proses pengecekkan tersebut dilakukan sampai dengan data yang paling
akhir.
1. Kemudian langkah selanjutanya pengecekkan dilakukan kembali pada
data yang palin awal dan kembali dibandingkan dengan data yang ada
sesudahnya. "ika data yang di awal tersebut ternyata lebih kecil, maka
data tersebut akan ditukar dan proses pengecekkan dilakukan, namun
tidak sampai data yang paling akhir. Karena data yang paling akhir
merupakan data yang paling kecil. !angkah ini akan diulang terus
menerus sesuai dengan jumlah data yang dimasukkan oleh user.
# Algoritma
'engan algoritma diatas, data terurut naik (ascending), untuk urut turun
(descending) silahkan ubah bagian,
! men"adi#
III. $UIC% SORT
Quicksort ditemukan oleh 2.A.3 4oare. Seperti pada merge sort,
algoritma ini juga berdasar pada pola di#ide*and*con5uer. &erbeda
dengan merge sort, algoritma ini hanya mengikuti langkah $ langkah
sebagai berikut ,
/. 'i#ide
0emilah rangkaian data menjadi dua sub*rangkaian A6p75*/8 dan
A659/7r8 dimana setiap elemen A6p75*/8 adalah kurang dari atau
sama dengan A658 dan setiap elemen pada A659/7r8 adalah lebih
besar atau sama dengan elemen pada A658. A658 disebut sebagai
elemen pi#ot. Perhitungan pada elemen 5 merupakan salah satu
bagian dari prosedur pemisahan.
1. 2on5uer
0engurutkan elemen pada sub*rangkaian secara rekursi:
Pada algoritma quicksort, langkah )kombinasi) tidak di lakukan
karena telah terjadi pengurutan elemen $ elemen pada sub*array
# Algoritma
void +,icSort(Object array[], int %eftIdx, int ri-.tIdx) {
int $ivotIdx;
/0 1ondisi 'er#inasi 0/
if (ri-.tIdx ( %eftIdx) {
$ivotIdx = $artition(array, %eftIdx, ri-.tIdx);
+,icSort(array, %eftIdx, $ivotIdx2!);
+,icSort(array, $ivotIdx+!, ri-.tIdx);
}
}
# Contoh
Kemudian urutkan elemen sub*rangkaian pada setiap sisi dari elemen pi#ot.

Vous aimerez peut-être aussi