I 1. Insertion
Sort
Kali
ini saya akan membahas tentang insertion . Mirip dengan cara orang mengurutkan
kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat
yang seharusnya. Pengurutan dimulai dari data ke-2 sampai dengan data
terakhir, jika ditemukan data yang lebih kecil , maka akan ditempatkan (
diinsert ) diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-elemen
lain akan bergeser ke belakang.
Insertion
Sort disebut-sebut sebagai metode pertengahan. Artinya, metode ini memiliki
kecepatan rata-rata antara metode primitif (bubble dan selection) dan modern
(merge dan quick). Metode ini, didasarkan pada sebuah kunci yang diambil pada
elemen ke-2 pada sebuah larik, lalu menyisipkan elemen tersebut jika kondisi
percabangan terpenuhi. Metode penyisipan (insertion) bertujuan untuk menjadikan
bagian sisi kiri larik terurutkan sampai dengan seluruh larik berhasil
diurutkan. Insertion Sort disebut-sebut sebagai metode pertengahan. Artinya,
metode ini memiliki kecepatan rata-rata antara metode primitif (bubble dan
selection) dan modern (merge dan quick). Metode ini, didasarkan pada sebuah
kunci yang diambil pada elemen ke-2 pada sebuah larik, lalu menyisipkan elemen
tersebut jika kondisi percabangan terpenuhi. Metode penyisipan (insertion)
bertujuan untuk menjadikan bagian sisi kiri larik terurutkan sampai dengan
seluruh larik berhasil diurutkan.
Contoh dari Insertion Sort
Prosedur
Insertion Sort
void insertion_sort(){
int temp;
for (int i=1;i < n;i++){
temp = data[i];
j = i -1;
while (data[j] > temp && j >= 0){
data[j+1] = data[j]; j--;
}
data[j+1] = temp;
}
}
void insertion_sort(){
int temp;
for (int i=1;i < n;i++){
temp = data[i];
j = i -1;
while (data[j] > temp && j >= 0){
data[j+1] = data[j]; j--;
}
data[j+1] = temp;
}
}
2. Merge Sort
Algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.
Contoh lain dari Merge Sort
Algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.
1.
Divide
: Memilah elemen – elemen dari
rangkaian data menjadi dua bagian.
2.
Conquer
: Conquer setiap bagian dengan
memanggil prosedur merge sort secara rekursif
3.
Kombinasi
: Mengkombinasikan dua bagian tersebut
secara rekursif untuk mendapatkan rangkaian data berurutanProses rekursi
berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan
diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut
menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.
Algoritma
Merge Sort
Algoritma
Merge sort sebenarnya sederhana: bagi larik menjadi dua sama besar, urutkan
bagian pertama, urutkan bagian kedua, lalu gabungkan.
Sebagai
contoh, jika terdapat data berupa 38, 27, 43, 3, 9,82, dan 10 maka ilustrasi
pengurutannya adalah sebagai berikut:
Contoh lain dari Merge Sort
public static void mergeSort_srt(int array[],int lo, int n){
int low = lo;
int high = n;
if (low >= high) {
return;
}
int middle = (low + high) / 2;
mergeSort_srt(array, low, middle);
mergeSort_srt(array, middle + 1, high);
int end_low = middle;
int start_high = middle + 1;
while ((lo <= end_low) && (start_high <= high)) {
if (array[low] < array[start_high]) {
low++;
} else {
int Temp = array[start_high];
for (int k = start_high- 1; k >= low; k--) {
array[k+1] = array[k];
}
array[low] = Temp;
low++;
end_low++;
start_high++;
}
}
}
}


tugas alpro
ReplyDelete