SORTING (PENGURUTAN DATA)
R. Denny Ari Wibowo, S.Kom STMIK BINA NUSANTARA JAYA LUBUKLINGGAU
PENJELASAN Pengurutan data (sorting) secara umum didefinisikan sebagai suatu proses untuk menyusun kembali himpunan objek sejenis (linear) menggunakan aturan tertentu. Secara umum ada dua jenis pengurutan data : a. Ascending (urut naik) b. Descending (urut menurut)
PRINSIP DASAR SORTING Prinsip dasar dari pengurutan data adalah dengan membandingkan antara dua buah data, yaitu lebih besar atau lebih kecil (sesuai yang diharapkan). Misalnya : B A T A = 5, B = 3 1 3 5 Maka : B A T T=A 2 3 5 A=B B A T B=T 3 3 5 A 4
3
T
B 5
METODE SORTING BUBBLE SORT Membandingkan elemen sekarang dengan elemen yang berikutnya, jika elemen sekarang lebih besar dari elemen berikutnya, maka tukarkan. INSERTION SORT Pengurutan dilakukan dengan cara membandingkan data ke-i (dimana i dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil, maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya. 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.
BUBBLE SORT Metode sorting termudah Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya, asc atau desc. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya sampai dengan iterasi sebanyak n-1. Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Prosedur Bubble Sort Procedure Bubble(Var a : Batas); Var i, j, x : Byte; Begin For i := 1 To n-1 Do For j := i To n Do If a[j] < a[i] Then Begin x := a[i]; a[i] := a[j]; a[j] := x; End; End;
Simulasi Bubble Sort Sebuah data sebagai berikut : 9 11 12 7 31 3 Maka tahap pengurutannya adalah : A=1 A=2 A=3 A=4 A=5
3 3 3 3 3
11 7 7 7 7
12 12 9 9 9
9 11 12 11 11
31 31 31 31 12
7 9 11 12 31
INSERTION SORT 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. Dengan penyisipan elemen ini, maka elemen-elemen lain akan bergeser ke belakang
Prosedur Insertion Sort Procedure Insertion(Var a : Batas); Var i, j, x : Byte; Begin For i := 2 To n Do Begin x := a[i]; a[0] := x; j := i-1; While x < a[j] Do Begin a[j+1] := a[j]; j := j–1; End; a[j+1] := x; End; End;
Simulasi Insertion Sort Sebuah data sebagai berikut : 44 55 12 42 94 18 7
67
Maka tahap pengurutannya adalah : A = 2 44 A = 3 12 A = 4 12 A = 5 12 A = 6 12 A = 7 7 A = 8 7
55 44 42 42 18 12 12
12 55 44 44 42 18 18
42 42 55 55 44 42 42
94 94 94 94 55 44 44
18 18 18 18 94 55 55
7 7 7 7 7 94 67
67 67 67 67 67 67 94
SELECTION SORT Merupakan kombinasi antara sorting dan searching (pencarian data) Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Prosedur Selection Sort Procedure Selection (Var a : Batas); Var i, j, x, k : Byte; Begin For i := 1 To n-1 Do Begin k := I; x := a[i]; For j := i+1 To n Do If a[j] < x Then Begin k := j; x := a[j]; End; a[k] := a[i]; a[i] := x; End; End;
Simulasi Selection Sort Sebuah data sebagai berikut : 9 11 12 7 31 3 Maka tahap pengurutannya adalah : A=1 A=2 A=3 A=4 A=5
3 3 3 3 3
11 7 7 7 7
12 12 9 9 9
7 11 11 11 11
31 31 31 31 12
9 9 12 12 31