“Algoritma Sorting”
Disusun Oleh
Nama : Isnani
Nim : 1957301025
Kelas : 2c
No.Praktukum : 01/PBO/TI/2019
i
LEMBAR PENGESAHAN
No.Praktikum : 06/PBO/2.C/TI/2021
Judul Praktikum :
NIM/Kelas : 1957301025/TI.2.C
Nilai :
Keterangan :
Dosen Pembimbing,
NIP. 199110302019031015
ii
DAFTAR ISI
iii
DAFTAR GAMBAR
Gambar 1 Contoh insertion sort.........................................................................................3
Gambar 2 Contoh selection sort ........................................................................................4
Gambar 3 Contoh merge sort ............................................................................................6
Gambar 4 Contoh quicksort ...............................................................................................8
Gambar 5 Contoh Program Insertion Sort..........................................................................9
Gambar 6 Output Program ................................................................................................9
Gambar 7 Program Selection Sort ....................................................................................11
Gambar 8 Output .............................................................................................................12
Gambar 9 Program Merge Sort ........................................................................................14
Gambar 10 Output ...........................................................................................................14
Gambar 11 Program Quick Sort .......................................................................................15
Gambar 12 Output ...........................................................................................................15
Gambar 13 Latihan 1 ........................................................................................................17
Gambar 14 Latihan 2 ........................................................................................................19
Gambar 15 Latihan 3 ........................................................................................................21
Gambar 16 Latihan 4 ........................................................................................................23
iv
BAB I
PENDAHULUAN
1.1 Tujuan
Sorting adalah proses menyusun elemen – elemen dengan tata urut tertentu dan
proses tersebut terimplementasi dalam bermacam aplikasi. Kita ambil contoh pada
aplikasi perbankan. Aplikasi tersebut mampu menampilkan daftar account yang
aktif. Hampir seluruh pengguna pada sistem akan memilih tampilan daftar
berurutan secara ascending demi kenyamanan dalam penelusuran data.
Beberapa macam algoritma sorting telah dibuat karena proses tersebut sangat
mendasar dan sering digunakan. Oleh karena itu, pemahaman atas algoritma –
algoritma yang ada sangatlah berguna.
Pada akhir pembahasan, diharapkan pembaca dapat :
1. Memahami dan menjelaskan algoritma dari insertion sort, selection sort,
merge sort dan quick sort.
2. Membuat implementasi pribadi menggunakan algoritma yang ada
3. Mampu mengimplementasikan program sorting
Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang
terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan
jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus
jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan
mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun
melakukan penggabungan data.
1.Insertion Sort
1
2.Selection Sort (Metode Seleksi)
3. Quick Sort
4.Merge Sort
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan
menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah
diurutkan (meja kedua). Elemen pertama diambil dari bagian array yang belum
diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array
yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi
elemen yang tersisa pada bagian array yang belum diurutkan.
Algoritma
4th
Data 1st Pass 2nd Pass 3rd Pass
Pass
2
Mango Mango Apple Apple Apple
Pada akhir modul ini, anda akan diminta untuk membuat implementasi bermacam
algoritma sorting yang akan dibahas pada bagian ini.
Ide utama dari algoritma selection sort adalah memilih elemen dengan
nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai
dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
Algoritma
3
}
}
swap(array[min],
array[i]);
}
}
Sebuah Contoh
Sebelum mendalami algoritma merge sort, mari kita mengetahui garis besar
dari konsep divide and conquer karena merge sort mengadaptasi pola tersebut.
4
2. Memahami Merge Sort
Seperti yang telah dijelaskan sebelumnya, Merge sort menggunakan pola divide
and conquer. Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah
berpola divide-and-conquer. Berikut 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 berurutan
Proses 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
Sebuah Contoh
Rangkaian data:
7 2 5 6
LeftArr RightArr
7 2 5 6
Membagi LeftArr menjadi dua bagian:
LeftArr RightArr
7 2
5
Mengkombinasikan
2 7
LeftArr RightArr
Mengkombinasikan
5 6
2 5 6 7
Gambar 3 Contoh merge sort
1.2.4 Quicksort
Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini
juga berdasar pada pola divide-and-conquer. Berbeda dengan merge sort,
algoritma ini hanya mengikuti langkah – langkah sebagai berikut :
1. Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan
A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama
dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau
sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot.
Perhitungan pada elemen q merupakan salah satu bagian dari prosedur
pemisahan.
1. Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif
Algoritma
6
pivotIdx = partition(array, leftIdx,
rightIdx); quickSort(array, leftIdx,
pivotIdx-1); quickSort(array, pivotIdx+1,
rightIdx); }
}
Sebuah Contoh
Rangkaian data:
3 1 4 1 5 9 2 6 5 3 5 8
Pilih sebuah elemen yang akan
menjadi elemen pivot.
3 1 4 1 5 9 2 6 5 3 5 8
Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari elemen
pivot tersebut. Geser elemen kanan ke arah kiri sampai ditemukan nilai dari elemen
yang tidak lebih besar dari elemen tersebut.
kiri kanan
3 1 4 1 5 9 2 6 5 3 5 8
Tukarkan antara elemen kiri dan kanan
kiri kanan
3 1 3 1 5 9 2 6 5 4 5 8
7
Geserkan kembali elemen kiri dan
kanan kiri
3 1 3 1 2 9 5 6 5 4 5 8
Terlihat bahwa titik kanan dan kiri telah digeser sehingga mendapatkan nilai elemen
kanan < elemen kiri. Dalam hal ini tukarkan elemen pivot dengan elemen kanan.
pivot
2 1 3 1 3 9 5 6 5 4 5 8
Kemudian urutkan elemen sub-rangkaian pada setiap sisi dari elemen pivot.
8
BAB II
PROGRAM DAN ANALISA
2.1 Program,Output dan Analisa
2.1.1 Program Insertion Sort
Analisa
9
6=4 ketika diurut algoritma ini akan mengambil elemen kedua dari array. Jika
elemen kedua tersebut memiliki nilai yang lebih kecil dibandingkan dengan elemen
pertama, maka elemen kedua akan ditukar dengan elemen pertama. Selanjutnya,
perulangan kedua akan melihat elemen ketiga dan kemudian akan memasukkan
elemen ketiga tersebut kedalam posisi yang tepat berdasarkan nilai dua elemen tadi,
yaitu elemen pertama dan kedua.Sehingga pada perulangan ke-i pada algoritma ini,
maka elemen i yang pertama dalam array original akan disortir.
10
Gambar 7 Program Selection Sort
11
Gambar 8 Output
Analisa
12
belum diurut. Disimpan indeksnya ,kemudian dilakukan pertukaran nilai
elemen dengan indeks yang disimpan tersebut dengan elemen yang paling
depan yang belum diurut.memproses data menggunakan insertion sort
small=j, Dari program diatas dapat dirangkm juga jika elemen yang di
sortir sssecara ascending maka nilai yang harus ditemukan terlebih dahulu
adalah nilai minumum . sebaliknya jika descending .
13
Gambar 9 Program Merge Sort
Gambar 10 Output
Analisa
pada program diatas mengimplementasikan algoritma merge sort , Memilah
elemen – elemen dari rangkaian data menjadi dua bagian. Dalam algoritma
merge sort dapat disimpulkan cara kerjanya yaitu Memilah elemen –
elemen dari rangkaian data menjadi dua bagian.,Mengkombinasikan dua
bagian tersebut secara rekursif untuk mendapatkan rangkaian data
berurutan. Proses 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
2.1.4 Quick Sort
14
Gambar 11 Program Quick Sort
Gambar 12 Output
Analisa
Pada awalnya program akan membaca fungsi-fungsi yang telah
dideklarasikan, kemudian membaca data yang akan diurutkan. Setelah itu
dilakukan perulangan pada proses pengurutan data agar semua data terurut.
15
Sebelum memproses data program akan terlebih dahulu memanggil fungsi
quicksort. Pada program pengurutan quicksort array dibagi menjadi dua
bagian (pemartisian) dengan semua elemen bagian kiri selalu lebih kecil
atau sama dengan daripada nilai elemen pivot dan nilai semua elemen
bagian kanan selelu lebih besar daripada pivot.
16
2.2 Latihan
2.2.1 Insertion Sort
Impelementasikan algoritma insertion sort dalam Java untuk mengurutkan
serangkaian data integer. Lakukan percobaan terhadap hasil implementasi anda
terhadap rangkaian data integer yang dimasukkan oleh pengguna melalui
command line.
Gambar 13 Latihan 1
17
2.2.2 Selection Sort
Impelementasikan algoritma selection sort dalam Java untuk
mengurutkan serangkaian data integer. Lakukan percobaan terhadap hasil
implementasi anda terhadap rangkaian data integer yang dimasukkan oleh
pengguna melalui command line.
Implementasi Algoritma Selection Sort
18
Gambar 14 Latihan 2
Gunakan implementasi merge sort berikut ini terhadap serangkaian data integer.
19
} else { array[i+startIdx] = _____;
}
else { array[i+startIdx] = _____;
}
} else { array[_____] = working[m1++];
}
}
}
public static void main(String args[]) { int numArr[] =
new int[args.length]; for (int i = 0; i < args.length;
i++) { numArr[i] = Integer.parseInt(args[i]);
3 }
mergeSort(numArr, 0, numArr.length-1); for (int i =
0; i < numArr.length; i++) {
System.out.println(numArr[i]);
}
}
}
Implementasi Merge Sort
20
Gambar 15 Latihan 3
// memilah do { while
(array[i]_____pivot) {
i++;
} while
(array[j]>_____
21
) { j--; } if
(i<=j) {
h=_____;
array[i]=_____;
array[j]=_____;
i++; j--;
}
} while (i<=j);
// rekursi if
(startIdx<j) {
quickSort(array, _____,
j);
} if (i<endIdx) {
quickSort(array, _____,
endIdx);
}
}
public static void main(String args[]) { int
numArr[] = new int[args.length]; for (int i
= 0; i < args.length; i++) { numArr[i] =
Integer.parseInt(args[i]);
} quickSort(numArr, 0,
numArr.length-1); for (int i = 0;
i < numArr.length; i++) {
System.out.println(numArr[i]);
}
}
}
22
Gambar 16 Latihan 4
23
BAB III
PENUTUP
3.1 Kesimpulan
Dari penjelasan diatas bahwa sorting dibagi menjadi beberapa bagian,
diantaranya : insertion sort, selection sort, marge sort dan quick sort. Yang
memiliki kelebihan dan kekurangan tersendiri. Dari beberapa shorting tersebut
memiliki tujuan yang sama, yaitu mengurutkan data untuk mempermudah
pencarian dan data akan menjadi sistematis.
Dari program diatas dapat kita simpulkan bahwa metode quick sort lebih
cepat daripada program metode sorting lainnya .
Algoritma merge sort lebih cepat daripada insertion sort untuk data yang
lebih banyak. Namun kelemahan dari merge sort algoritma ini membutuhkan
memori lebih besar dikarenakan dilakukan secara rekursif dan memakai elemen
terpisah.
Algortima insertion secara teknis lebih mudah diterapkan dibandingkan
dengan metode lainnya.
24
DAFTAR PUSTAKA
5. Saptadi Arief Hendra, Desi Windi Sari. 2012. Analisis Algoritma Insertion
Sort, Merge Sort dan Implementasinya Dalam Bahasa Pemrograman C++.
Vol. 4 No 2. 2012.
25