Algoritma C++ Selection Sort Lengkap
SELECTION SORTMerupakan kombinasi antara sorting dan searching. Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
ALGORITMA
1. MULAI
2. Membuat fungsi selectionsort. Dengan parameter array dan ukuran dari data.
Mendeklarasikan variable dengan tipe integer didalam fungsi.
Melakukan perulangan sebanyak nilai array-1. Dimana jika panjang array 8 maka nilai maksimal index adalah 7 karena dimulai dari 0.
Menyimpan nilai i dari perulangan sebagai variable kecil. Nilai Variable kecil ini nanti akan digunakan untuk mengecek kondisi dari index array.
Melakukan perulangan dimana mengetahui index sebelahnya yakni i+1. Sebagai contoh index awal kecil=0 maka sebelahnya j=0+1 atau index ke 1.
Dengan pengkondisian if di cek apakah nilai index kecil lebih besar dari j . jika ya maka akan diubah nilai kecil=j.
Setelah perulangan kedua maka dicek apakah nilai kecil tidak sama dengan i. jika tidak sama maka nilai masih belum urut. Sehingga dilakukan pertukaran nilai array dengan variable bantu temporary.
temp=Array[i];// dilakukan pertukaran nilai dengan variabel bantu temp
Array[i]=Array[kecil];// mengisi nilai arrai index ke i dengan array index kecil
Array[kecil]=temp;//mengisi nilai array index kecil dengan temporary.
3. Pada prosedur main mendeklarasikan nilai array dengan elemen yang dibuat sebagai data acak.
4. Menampilkan data sebelum diurutkan.
5. Memanggil fungsi dengan parameter data acak.
6. Menampilkan data setelah diurutkan.
7. SELESAI
SOURCE CODE
/* Selection sort */
#include <iostream.h>
#include <iomanip.h>
void SelectionSort(int Array[],constint Size)// membuat fungsi untuk memanggil perhitungan dengan selection
{
int i,j,kecil,temp;//mendeklarasikan variabel
for(i=0;i<Size-1;i++){
// melakukan perulangan sebanyak nilai array -1
kecil=i;
//menyimpan nilai index dalam variabel baru kecil
for(j=i+1;j<Size;j++)
//perulangan untuk menghitung index i+1 atau sebelahnya.
{
if(Array[kecil]>Array[j])
//mengecek kondisi dimana nilai array kecil lebih besar dari j. maka di ubah pivotnya
{
kecil=j;
//mengeset nilai kecil dengan nilai j
}
}
if(kecil != i){//mengecek dimana nilai kecil tidak sama dengan i
temp=Array[i];// dilakukan pertukaran nilai dengan variabel bantu temp
Array[i]=Array[kecil];// mengisi nilai arrai index ke i dengan array index kecil
Array[kecil]=temp;//mengisi nilai array index kecil dengan temporari
}
}
}
int main(){
int NumList[8]={5,34,32,25,75,42,22,2};//mengeset nilai array Numlist dengan nilai
int temp;//mendeklarasikan variabel temporari
cout<<“Data Sebelum Diurutkan : n”;//menampilkan data sebelum diurutkan
for(int d=0;d<8;d++){
cout<<setw(3)<<NumList[d];
}
cout<<“nn”;
SelectionSort(NumList,8);//memanggil fungsi selection sort
cout<<“Data Setelah Diurutkan :n”;
for(int iii=0;iii<8;iii++)//menampilkan data yang telah diurutkan
cout<<setw(3)<<NumList[iii];
}