Tugas 11 - Alpro1 - SI UNIPDU
Algoritma Pengurutan(Sorting)
A. Pengertian
Pengurutan atau “Sorting” adalah suatu proses menyusun data dari semulanya tidak teratur menjadi data yang teratur sesuai dengan yang diinginkan pengguna dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu (untuk data yang bertipe numerik atau karakter).
Bagi para pemula dalam belajar Java, pengetahuan mengenai teknik sorting data tentunya menjadi hal yang fundamental.
Ada dua macam pengurutan
• Ascending (urut naik) merupakan pengurutan dari angka yang nilainya lebih kecil kemudian menuju ke nilainya yang lebih besar.
• Descending (urut turun) adalah sebaliknya, yaitu pengurutan dari nilai yang lebih besar kemudian menuju ke nilainya yang lebih kecil.
Jenis jenis pengurutan
1. Pengurutan Gelembung/Bubble sort
Bubble Sort merupakan metode pengurutan yang paling banyak digunakan di kalangan programmer dikarenakan penggunaannya yang simple dan sederhana. Namun, dibalik kesederhanaannya itu terdapat proses algoritma yang terlalu lama sehingga bisa dikatakan bahwa Metode Bubble Sort merupakan metode yang paling lambat dibanding dengan metode pengurutan yang lainnya.
Pengurutan dilakukan dengan memilih elemen terbesar dan menempatkan pada posisinya, kemudian mencari element terbesar berikutnya dan menempatkan pada tempatnya, dan seterusnya.
Penjelasan Algoritma Bubble Sort:
1) Dalam Bubble Sort. Jumlah Iterasi sebesar banyaknya Data. Jika jumlah datanya 5 maka, jumlah iterasinya ialah 5. Selain itu, setiap iterasi terdapatnya proses yang jumlahnya ialah sebesar banyaknya Data. Diatas jumlah datanya ialah 5 maka, jumlah proses setiap iterasinya ialah 5. Dan untuk berikutnya harus dikurang 1.
2) Dalam Bubble Sort, Walaupun data sudah terurut seperti pada kasus diatas, data sudah terurut pada iterasi ke-4. Namun, proses sorting tetap jalan
sampai jumlah iterasinya terpenuhi.
3) Proses Pertukaran Datanya dimulai dari data pertama dibandingkan dengan data kedua atau bisa digambarkan dengan Data[n] <==> Data[n+1]. Lakukan langkah ini sampai berada pada Data Terakhir.
Dari proses algoritma diatas dapat dapat disimpulkan bahwa Metode Bubble Sort merupakan metode sorting yang paling lambat dibandingkan dengan metode sorting yang lain karena, terdapat proses pembandingan yang terlalu banyak walaupun Data sudah terurut.
Ilustrasi Bubble sort:
Source code Bubble sort:
import java.util.Scanner;
class BubbleSort {
public static void main(String[] args) {
// Object
Scanner input = new Scanner(System.in);
// Input Data
System.out.println("Masukkan Jumlah Data : ");
int jlh_data = input.nextInt();
int[] data = new int[jlh_data];
System.out.println();
for (int a = 0; a < jlh_data; a++) {
System.out.println("Nilai Data ke-" +(a+1)+ " : ");
data[a] = input.nextInt();
}
// Showing Data Before Sorting
System.out.println("\nData Sebelum di Sorting");
for (int a = 0; a < jlh_data; a++)
System.out.println(data[a]+" ");
// Bubble Sort Process
System.out.println("\nProses Bubble Sort");
for (int a = 0; a < jlh_data; a++) {
System.out.println("Iterasi ke-" +(a+1)+ " : ");
for (int b = 0; b < jlh_data; b++)
System.out.println(data[b]+" ");
System.out.println("Bandingkan " +data[0]+ " dengan " +data[1]);
for (int b = 0; b < jlh_data-1; b++) {
String message = " Tidak ada pertukaran";
if (data[b] > data[b+1]) {
// Data Value Exchange Process
message = "Data " +data[b]+ " ditukar dengan " +data[b+1];
int temp = data[b]; // Third Variable
data[b] = data[b+1];
data[b+1] = temp;
}
if (b < jlh_data-(a+1)) {
for (int c = 0; c < jlh_data; c++)
System.out.println(data[c]+ " ");
System.out.println(message);
}
}
System.out.println("\n");
}
// Showing Data After Sorting
System.out.println("Data Setelah di Sorting : ");
for (int a = 0; a < jlh_data; a++)
System.out.println(data[a]+ " ");
} Output hasil awal:
Dibagian awal kita harus memasukkan jumlah nilai
Hasil akhir:
Maka hasil akhirnya, nilai yang kita masukkan akan diurutkan otomatis
2. Pengurutan pilihan/Selection sort
Dibanding Bubble Sort, Selection Sort jelas lebih baik dari segi kecepatan proses pengurutannya. Karena, Inti dari algoritma Selection Sort ialah mencari nilai yang paling kecil(Jika Ascending) atau nilai yang paling besar(Jika Descending) di urutan data berikutnya.
Proses pengurutan menggunakan metode selection sort secara terurut naik adalah:
1. Mencari data terkecil dari data pertama sampai data terakhir, kemunian di tukar posisinya dengan data pertama.
2. mencari data terkecil dari data kedua sampai data terakhir, kemudian di tukar dengan posisinya dengan data kedua.
3. mencari data terkecil dari data ketiga sampai data terakhir, kemudian di tukar posisinya dengan data ketiga
4. dan seterusnya sampai semua data urut naik. apabila terdapat n data yang akan di urutkan, maka membutukan (n - 1) langkah pengurutan, dimana data terakhir yaitu data ke-n tidak perlu di urutkan karena tinggal satu satunya.
Proses Selection sort Ascending
• Elemen yang paling besar diletakkan di akhir.
• Elemen yang paling kecil diletakkan di awal.
Proses Selection sort Descending
• Elemen yang paling kecil diletakkan di akhir.
• Elemen yang paling besar diletakkan di awal.
Penjelasan Algoritma Selection sort
• Jumlah Iterasi untuk Selection Sort ialah berjumlah sebesar Jumlah Data – 1. Jika jumlah Datanya ialah 6. Maka, jumlah Iterasinya ialah sebesar 6 – 1 = 5.
• Proses pertukaran Data dimulai dari Data Pertama sampai Data Terakhir dengan cara membandingkan Data ke-n dan cari nilai yang paling kecil di sisi
kanan nilai n.
• Keterangan bahwa nilai Data yang sudah di tukar(nilai yang paling kecil) tidak akan dibandingkan lagi untuk proses iterasi berikutnya.
Ilustrasi Selection sort
Source code implementasi Selection sort
import java.util.Scanner;
class SelectionSort {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Masukkan Jumlah Data : ");
int jlh_data = input.nextInt();
// input Every Data value
int[] data = new int[jlh_data]; // Array for every Data Value
System.out.println();
for (int x = 0; x < jlh_data; x++) {
System.out.println("Input nilai Data ke-" +(x+1)+ " : ");
data[x] = input.nextInt();
}
// Showing Data Before Sorting
System.out.println();
System.out.println("Data Sebelum di Sorting : ");
for (int x = 0; x < jlh_data; x++)
System.out.println(data[x]+ " ");
// Selection sort Process
System.out.println("\n\nProses Selection Sort");
for (int x = 0; x < jlh_data-1; x++) {
System.out.println("Iterasi ke-" +(x+1)+ " : ");
for (int y = 0; y < jlh_data; y++)
System.out.print(data[y]+ " ");
System.out.println("Apakah Data " +data[x]+ " urut?");
boolean tukar = false;
int index = 0;
int min = data[x];
String message = "Tidak ada pertukaran";
for (int y = x+1; y < jlh_data; y++) {
if (min > data[y]) {
tukar = true;
index = y;
min = data[y];
}
}
if (tukar == true) {
// Exchange Data
message = "Data " +data[x]+ " ditukar dengan " +data[index];
int temp = data[x];
data[x] = data[index];
data[index] = temp;
}
for (int y = 0; y < jlh_data; y++)
System.out.println(data[y]+ " ");
System.out.println(message+"\n");
}
// Showing Data After Sorting
System.out.println("Data Setelah di Sorting : ");
for (int x = 0; x < jlh_data; x++)
System.out.println(data[x]+ " ");
}
}
Output hasil awal:
Kita harus memasukkan jumlah nilai
Output hasil akhir:
Komentar
Posting Komentar