Algoritma Selection Sort Ascending dan Descending pada Cpp/C++ | C++ Tutorial
Selection sort adalah salah satu metode pengurutan data dengan pengurutan berdasarkan data terkecil(minimum) atau data terbesar(maksimum) nya.
Tanpa berlama-lama lagi, langsung saja berikut adalah algoritma selection sort berdasarkan vi-gaming:
1. Minimum Selection Sort Ascending
#include <iostream>
#include <conio.h> // untuk menggunakan fungsi _getch()
using namespace std;
int main()
{
// Judul program
cout << "|---------------------------------------------" << endl;
cout << "| PROGRAM SELECTION SORT MINIMUM ASCENDING" << endl;
cout << "|---------------------------------------------" << endl;
cout << "|" << endl;
// Input ukuran
int size;
cout << "| Masukkan ukuran array: ";
cin >> size;
cout << "|---------------------------------------------" << endl;
// Input nilai array
int* number = new int[size];
for (int i = 0; i < size; i++)
{
cout << "| Input number ke-" << i + 1 << " : ";
cin >> number[i];
}
system("cls");
cout << "|---------------------------------------------" << endl;
cout << "| PROGRAM SELECTION SORT MINIMUM ASCENDING" << endl;
cout << "|---------------------------------------------" << endl;
cout << endl;
// menampilkan nilai sebelum diurutkan
cout << "|---------------------------------------------" << endl;
cout << "| Sebelum diurutkan : ";
for (int i = 0; i < size; i++)
cout << number[i] << ' ';
cout << endl << "|---------------------------------------------" << endl;
cout << endl << "|---------------------------------------------" << endl;
// pengurutan nilai
int jmin, temp, u = 0;
for (int j = 0; j < size; j++)
{
jmin = size - 1;
for (int k = u; k <= size - 2; k++)
{
if (number[k] < number[jmin])
{
jmin = k;
}
}
temp = number[u];
number[u] = number[jmin];
number[jmin] = temp;
u++;
// Menampilkan proses (perubahan angka setiap loopingnya)
cout << "| Proses ke-" << j + 1 << ": ";
for (int i = 0; i < size; i++)
{
cout << number[i] << ' ';
}
cout << endl;
}
cout << "|---------------------------------------------" << endl;
// menampilkan nilai setelah diurutkan
cout << endl << "|---------------------------------------------" << endl;
cout << "| Setelah diurutkan : ";
for (int i = 0; i < size; i++)
cout << number[i] << ' ';
cout << endl << "|---------------------------------------------" << endl;
// Pause dan menghapus memory
_getch();
delete[] number;
return 0;
}
2. Minimum Selection Sort Descending
3. Maximum Selection Sort Ascending
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
// input ukuran
cout << "Ukuran : ";
int size;
cin >> size;
cout << endl;
// deklarasi
int* angka = new int[size];
// input array
for (int i = 0; i < size; i++)
{
cout << "Input angka ke-" << i + 1 << " : ";
cin >> angka[i];
}
// menampilkan array sebelum diurutkan
cout << endl << "Sebelum diurutkan : ";
for (int i = 0; i < size; i++)
{
cout << angka[i] << ' ';
}
cout << endl;
// sorting secara ascending
int temp;
int jmax, u = size-1;
cout << endl;
for (int j = 0; j < size; j++)
{
jmax = 0;
for (int k = 1; k <= u; k++)
{
if (angka[k] > angka[jmax])
{
jmax = k;
}
}
temp = angka[u];
angka[u] = angka[jmax];
angka[jmax] = temp;
u--;
cout << "Hasil proses ke-" << j + 1 << " = ";
for (int k = 0; k < size; k++)
{
cout << angka[k] << ' ';
}
cout << endl;
}
// menampilkan array setelah diurutkan
cout << "\nNilai setelah diurutkan : ";
for (int i = 0; i < size; i++)
{
cout << angka[i] << ' ';
}
cout << endl;
// hapus array
delete[] angka;
_getch();
return 0;
}
4. Maximum Selection Sort Descending
Maximum Selection Sort Ascending adalah metode pengurutan dengan mencari nilai terbesarnya dahulu, kemudian diletakkan di indeks paling depan. Sehingga urutannya dari terbesar ke terkecil(descending).
#include <iostream>
#include <conio.h> // untuk menggunakan fungsi _getch()
using namespace std;
int main()
{
// Judul program
cout << "|---------------------------------------------" << endl;
cout << "| PROGRAM SELECTION SORT MAXIMUM DESCENDING" << endl;
cout << "|---------------------------------------------" << endl;
cout << "|" << endl;
// Input ukuran
int size;
cout << "| Masukkan ukuran array: ";
cin >> size;
cout << "|---------------------------------------------" << endl;
// Input nilai array
int *number = new int[size];
for (int i = 0; i < size; i++)
{
cout << "| Input angka ke-" << i + 1 << " : ";
cin >> number[i];
}
system("cls");
cout << "|---------------------------------------------" << endl;
cout << "| PROGRAM SELECTION SORT MAXIMUM DESCENDING" << endl;
cout << "|---------------------------------------------" << endl;
cout << endl;
// menampilkan nilai sebelum diurutkan
cout << "|---------------------------------------------" << endl;
cout << "| Sebelum diurutkan : ";
for (int i = 0; i < size; i++)
cout << number[i] << ' ';
cout << endl << "|---------------------------------------------" << endl;
cout << endl << "|---------------------------------------------" << endl;
// Pengurutan nilai
int jmax, temp, u = 0;
for (int j = 0; j < size; j++)
{
jmax = size - 1;
for (int k = u; k <= size - 2; k++)
{
if (number[k] > number[jmax])
{
jmax = k;
}
}
temp = number[u];
number[u] = number[jmax];
number[jmax] = temp;
u++;
// Menampilkan proses (perubahan angka setiap loopingnya)
cout << "| Proses ke-" << j + 1 << ": ";
for (int i = 0; i < size; i++)
{
cout << number[i] << ' ';
}
cout << endl;
}
cout << "|---------------------------------------------" << endl;
// menampilkan nilai setelah diurutkan
cout << endl << "|---------------------------------------------" << endl;
cout << "| Setelah diurutkan : ";
for (int i = 0; i < size; i++)
cout << number[i] << ' ';
cout << endl << "|---------------------------------------------" << endl;
// Pause dan menghapus memory
_getch();
delete[] number;
return 0;
}
Comments
Post a Comment