Pengurutan seleksi (selection sort) mempunyai mekanisme seperti berikut: Mula-mula suatu penunjuk (diberi nama posAwal), yang menunjuk ke lokasi awal pengurutan data, diatur agar berisi indeks pertama dalam larik. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang ditunjuk oleh petunjuk tersebut hingga elemen yang terakhir dalam larik. Lokasi bilangan ini ditunjuk oleh posMin. Lalu tukarkan nilai bilangan terkecil tersebut dengan nilai yang ditunjuk posAwal. Proses seperti itu diulang dari posAwal bernilai 0 hingga n-2, dengan n menyatakan jumlah elemen dalam larik.
Implementasi pengurutan selection sort dalam bentuk algoritma dan program
Algoritma :
SUBRUTIN selection_sort (L,n)
UNTUK posAwal = 0 S/D n-2
PosMin ← posAwal
UNTUK j ← posAwal + 1 S/D n-1
JIKA L [posMin] > L[j] MAKA
PosMin ← j
AKHIR – JIKA
AKHIR – UNTUK
//Tukarkan
tmp ← L[posAwal]
L[posAwal] ← L[posMin]
AKHIR – UNTUK
AKHIR – SUBRUTIN
Sourch Code Program C++
#include <iostream.h>
#include <conio.h>
void tampilkan_larik(int data[], int n)
{
int i;
for (i=0;i<n;i++)
cout<<data[i]<<" ";
cout<<"\n";
}
void selection_sort (int data[], int n)
{
int posMin, posAwal, j, tmp;
for (posAwal=0;posAwal<n-1;posAwal++)
{
posMin=posAwal;
for (j=posAwal+1;j<n;j++)
if (data[posMin]>data[j])
posMin=j;
//tukarkan
tmp=data[posAwal];
data[posAwal]=data[posMin];
data[posMin]=tmp;
cout<<"hasil posAwal= "<<posAwal<<" : ";
tampilkan_larik(data,n);
}
}
int main()
{
const jum_data=8;
int i;
int data[]={25,57,48,37,12,92,80,33};
selection_sort(data, jum_data);
//hasil pengurutan
cout<<endl;
cout<<"Hasil pengurutan:\n";
tampilkan_larik(data,jum_data);
getch();
}
Hasil Program Setelah di Eksekusi
Sumber: http://allaboutalgoritma.blogspot.co.id/2009/06/metode-pengurutan-seleksi-selection.html
No comments:
Post a Comment