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.
cara kerjanya adalah sebagai berikut:
1. Menginputkan banyaknya jumlah data.
2. Kemudian Proses kerja programnya adalah sebagai berikut.
Dengan Dev C++ :
cara kerjanya adalah sebagai berikut:
1. Menginputkan banyaknya jumlah data.
2. Kemudian Proses kerja programnya adalah 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
Dengan Dev C++ :
#include <iostream>
#include <cstdlib>
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);
cetak_data(data,n);
return 0;
}
0 komentar:
Posting Komentar