
Pengurutan seleksi (Selection Sort) adalah metode pengurutan data yang mencari nilai terkecil atau terbesar sesuai dengan jenis pengurutannya kemudian menempatkan data tersebut ke bagian depan atau indeks awal sampai bagain paling akhir. Berikut contoh proses pengurutan metode seleksi dan ilustrasinya :
Data Awal :
[3, 7, 2, 1, 5, 4, 6]
Perulangan ke-1
Nilai indeks awal : 0
Pertukaran indeks :
0 2 3 3 3 3
Perubahan Data :
[1, 7, 2, 3, 5, 4, 6]
Perulangan ke-2
Nilai indeks awal : 1
Pertukaran indeks :
2 2 2 2 2
Perubahan Data :
[1, 2, 7, 3, 5, 4, 6]
Perulangan ke-3
Nilai indeks awal : 2
Pertukaran indeks :
3 3 3 3
Perubahan Data :
[1, 2, 3, 7, 5, 4, 6]
Perulangan ke-4
Nilai indeks awal : 3
Pertukaran indeks :
4 5 5
Perubahan Data :
[1, 2, 3, 4, 5, 7, 6]
Perulangan ke-5
Nilai indeks awal : 4
Pertukaran indeks :
4 4
Perubahan Data :
[1, 2, 3, 4, 5, 7, 6]
Perulangan ke-6
Nilai indeks awal : 5
Pertukaran indeks :
6
Perubahan Data :
[1, 2, 3, 4, 5, 6, 7]

Berikut adalah contoh pengurutan seleksi beserta penulisannya dalam bahasa algoritmik dan beberapa bahasa pemograman :
1. Bahasa Algoritmik
{ Prosedur menampilkan data }
procedure showData(tab : array of integer; batas : integer)
{ Deklarasi variabel prosedur }
i : integer
for i := 0 to batas do
output(tab[i], ' ')
output('\n')
{ Deklarasi variabel utama dan sekaligus memberi nilai pada data }
i : integer
j : integer
temp : integer
select : integer
data : array[0..6] of integer = (3, 7, 2, 1, 5, 4, 6)
batas : integer
{ Bagain program utama }
{ Memberi masukan ke dalam varaibel batas }
batas <- length(data-1)
{ Menampilkan data yang belum terurut }
showData(data, batas)
{ Proses pengurutan metode seleksi }
for i := 0 to (batas-1) do
{ Mengisi nilai select dengan nilai indeks i }
select <- i
for j := i+1 to batas do
{ Pengurutan menaik }
if (data[select] > data[j])
{ Proses pertukaran nilai indeks }
select <- j
{ Proses pertukaran data }
temp <- datai
datai <- dataselect
dataselect <- temp
{ Menampilkan data yang sudah terurut }
showData(data, batas)
2. Bahasa Pascal
program seleksi;
{ Prosedur menampilkan data }
procedure showData(tab : array of integer; batas : integer);
{ Deklarasi variabel prosedur }
var
i : integer;
begin
for i := 0 to batas do
begin
write(tab[i], ' ');
end;
writeln();
end;
{ Deklarasi variabel utama dan sekaligus memberi nilai pada data }
var
i : integer;
j : integer;
temp : integer;
select : integer;
data : array[0..6] of integer = (3, 7, 2, 1, 5, 4, 6);
batas : integer;
{ Bagian program utama }
begin
{ Memberi masukan ke dalam variabel batas }
batas := length(data)-1;
{ Menampilkan data yang belum terurut }
showData(data, batas);
{ Prsoes pengurutan metode seleksi }
for i := 0 to (batas-1) do
begin
{ Mengisi nilai select dengan nilai indeks i }
select := i;
for j := i+1 to batas do
begin
{ Pengurutan menaik }
if (data[select] > data[j]) then
begin
{ Proses petukaran nilai indeks }
select := j;
end;
end;
{ Proses pertukaran data }
temp := data[i];
data[i] := data[select];
data[select] := temp;
end;
{ Menampilkan data yang sudah terurut }
showData(data, batas);
end.
3. Bahasa C++
#include <iostream>
using namespace std;
// Prosedur menampilkan data
void showData(int tab[], int batas)
{
// Deklarasi variabel prosedur
int i;
for (i = 0; i < batas; i++)
{
cout << tab[i] << " ";
}
cout << endl;
}
// Bagian program utama
int main()
{
// Deklarasi variabel utama dan sekaligus memberi nilai pada data
int i;
int j;
int temp;
int select;
int data[7] = {3, 7, 2, 1, 5, 4, 6};
int batas;
// Memberi masukan ke dalam variabel batas
batas = sizeof(data)/sizeof(data[0]);
// Menampilkan data yang belum terurut
showData(data, batas);
// Proses pengurutan metode seleksi
for (i = 0; i < (batas-1); i++)
{
// Mengisi nilai select dengan nilai indeks i
select = i;
for (j = i+1; j < batas; j++)
{
// Pengurutan menaik
if (data[select] > data[j])
{
// Proses pertukaran nilai indeks
select = j;
}
}
// Proses pertukaran data
temp = data[i];
data[i] = data[select];
data[select] = temp;
}
// Menampilkan data yang sudah terurut
showData(data, batas);
// Mengembalikan nilai
return 0;
}
4. Bahasa Java
public class Main
{
// Blok method menampilkan data
public static void showData(int tab[], int batas)
{
// Dekalarasi variabel method
int i;
for (i = 0; i < batas; i++)
{
System.out.print(tab[i] + " ");
}
System.out.println();
}
// Block program utama
public static void main(String[]args)
{
// Deklarasi variabel utama dan sekaligus memberi nilai pada data
int i;
int j;
int temp;
int select;
int[] data = {3, 7, 2, 1, 5, 4, 6};
int batas;
// Memberi masukan ke dalam variabel batas
batas = data.length;
// Menampilkan data yang belum terurut
showData(data, batas);
// Proses pengurutan metode seleksi
for (i = 0; i < (batas-1); i++)
{
// Mengisi nilai select dengan nilai indeks i
select = i;
for (j = i+1; j < batas; j++)
{
// Pengurutan menaik
if (data[select] > data[j])
{
// Proses pertukaran nilai indeks
select = j;
}
}
// Proses pertukaran data
temp = data[i];
data[i] = data[select];
data[select] = temp;
}
// Menampilkan data yang sudah terurut
showData(data, batas);
}
}