Selasa, 17 Mei 2016

Selection Sort

0

RENCANA KULIAH MINGGU KE SEMBILAN TENTANG SORTING
Selection Sort
Algoritma pengurutan dengan metode seleksi dapat diilustrasikan demikian. Misalkan
diberikan data awal :
[8, 4, 7, 3, 1, 2, 6, 5]
Data pertama adalah 8. Akan dicari (atau tepatnya “dipilih/diseleksi”) data terkecil dari data
kedua sampai terakhir yang terkecil untuk menempati posisi pertama (i=1) ini. Data terkecil
ditemukan pada posisi ke-5 (t=5). Maka data pertama ditukar dengan data ke-5, menjadi :
[1, 4, 7, 3, 8, 2, 6, 5]
Langkah ini diulang untuk data kedua (i=2). Ditemukan data terkecil pada posisi ke-6 (t=6). Datake-2 ditukar dengan data ke-6, menjadi :
[1, 2, 7, 3, 8, 4, 6, 5]

Fase selengkapnya dapat dilihat pada data berikut ini.
Data awal :      [8, 4, 7, 3, 1, 2, 6, 5]   1 terkecil, 8àß1
fase 1               [1, 4, 7, 3, 8, 2, 6, 5]   2 terkecil, 4àß2
fase 2               [1, 2, 7, 3, 8, 4, 6, 5]   3 terkecil, 7àß3
fase 3               [1, 2, 3, 7, 8, 4, 6, 5]   4 terkecil, 7àß4
fase 4               [1, 2, 3, 4, 8, 7, 6, 5]   5 terkecil, 8àß5
fase 5               [1, 2, 3, 4, 5, 7, 6, 8]   6 terkecil, 7àß6
fase 6               [1, 2, 3, 4, 5, 6, 7, 8]   7 terkecil, tetap
fase 7               [1, 2, 3, 4, 5, 6, 7, 8]
fase 8               [1, 2, 3, 4, 5, 6, 7, 8]

1.       Identifikasi masalah : metode SELCTION SORT mengurutkan angka dimana   elemen- elemen di perbandingkan satu-persatu sampai pada elemen terakhir dan di susun berdasarkan ketentuan berlaku (terbesar atau terkecil).


2.      Analisis:
àinput  : int data[10], n;
            cout<<"Banyak data : ";
            cin>>n;
            baca_data(data,n);
àoutput : cetak_data(data,n);
            selection_sort(data,n);
            cout<<endl;
            cout<<"DATA YANG TELAH TERSUSUN DARI TERKECIL HINGGA TERBESAR "<<endl;
            cetak_data(data,n);


3.      Membuat flowchare









4.      Tes menggunakan data
è Input               : 7 6 5 4 3
è Output             : 3 4 5 6 7

5.       C++

#include <cstdlib>
#include <iostream>

using namespace std;

void baca_data(int A[],int n)
{ int i;
for (i=0;i<n;i++)
{cout<<"Data ke -"<<i+1<<" : ";
cin>>A[i];
}
}

void cetak_data(const int A [],int n)
{ int i;
for (i=0;i<n;i++)
cout<<A[i];
cout<<"\n";
}

void tukar (int *a, int *b)
{ int temp;
temp=*a;
*a=*b;
*b=temp;
}

void minimum (int A[], int dari, int n, int*tempat)
{ int i, min;
min=A[dari];
*tempat=dari;
for(i=dari+1;i<n;i++)
if(A[i]<min)
{min=A[i];
*tempat=i;
}
}

void selection_sort(int A[], int n)
{ int i, t;
for (i=0;i<n;i++)
{ minimum(A, i, n, &t);
tukar(&A[i], &A[t]);
}
}

int main(int argc, char *argv [])
{
        int data[10], n;
        cout<<"Banyak data : ";
        cin>>n;
        baca_data(data,n);
        cetak_data(data,n);
        selection_sort(data,n);
        cout<<endl;
        cout<<"DATA YANG TELAH TERSUSUN DARI TERKECIL HINGGA TERBESAR "<<endl;
        cetak_data(data,n);
       
       
        system ("pause");
        return 0;
}


6.       Eksekusi (hasil runing C++)


waktu pengerjaan : 3 jam 




0 komentar:

Posting Komentar