Selection Sort merupakan salah satu algoritma pengurutan yang sederhana. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut:
- Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
- Menukarkan nilai ini dengan elemen pertama list
- Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
contoh simulasi algoritma selection sort sbb :
jika kita memiliki elemen array sbb : {5, 1, 12, -5, 16, 2, 12, 14}
Algoritma di dalam Selection Sort terdiri dari kalang bersarang. Dimana kalang tingkat pertama (disebut pass)
berlangsung N-1 kali. Di dalam kalang kedua, dicari elemen dengan nilai terkecil. Jika didapat, indeks yang didapat ditimpakan ke variabel min. Lalu dilakukan proses penukaran. Begitu seterusnya untuk setiap Pass. Pass sendiri makin berkurang hingga nilainya menjadi semakin kecil. Berdasarkan operasi perbandingan elemennya.
implementasinya dalam bahasa pemrograman sbb :
/**
*
* @author Edi Zhou
*/
public class selectionSort {
int[] angka={5, 1, 12, -5, 16, 2, 12, 14};
public selectionSort()
{
tampilkanAngka();
urutkanAngka();
tampilkanAngka();
}
void tampilkanAngka()
{
System.out.println("\n--------------------------------");
for (int i=0;i<angka.length;i++)
{
System.out.print(angka[i]+" ");
}
}
void urutkanAngka()
{
int tampung;
for (int i=0;i<angka.length-1;i++)
{
int minindek=i;
for(int j=i+1;j<angka.length;j++)
{
if(angka[j]<angka[minindek])
minindek=j;
if(minindek!=i)
{
tampung=angka[i];
angka[i]=angka[minindek];
angka[minindek]=tampung;
}
}
//tampilkanAngka();
}
}
public static void main(String[] aksi)
{
selectionSort urut = new selectionSort();
}
}
*
* @author Edi Zhou
*/
public class selectionSort {
int[] angka={5, 1, 12, -5, 16, 2, 12, 14};
public selectionSort()
{
tampilkanAngka();
urutkanAngka();
tampilkanAngka();
}
void tampilkanAngka()
{
System.out.println("\n--------------------------------");
for (int i=0;i<angka.length;i++)
{
System.out.print(angka[i]+" ");
}
}
void urutkanAngka()
{
int tampung;
for (int i=0;i<angka.length-1;i++)
{
int minindek=i;
for(int j=i+1;j<angka.length;j++)
{
if(angka[j]<angka[minindek])
minindek=j;
if(minindek!=i)
{
tampung=angka[i];
angka[i]=angka[minindek];
angka[minindek]=tampung;
}
}
//tampilkanAngka();
}
}
public static void main(String[] aksi)
{
selectionSort urut = new selectionSort();
}
}
download source code disini
referensi :
- Munir, Rinaldi. 2003. Diktat Kuliah IF2153 Matematika Diskrit. Program Studi Teknik Informatika, Institut Teknologi Bandung.
- http://www.algolist.net/Algorithms/Sorting/Selection_sort
No comments:
Post a Comment