Pengurutan Seleksi (Selection Sort) - Algoritma dan Pemograman

Algoritma dan Pemograman

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]

Pengurutan (Sorting)

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);
    }
}
4or Education

4or Education hadir sebagai blog edukasi yang menemanimu menjelajahi samudra ilmu pengetahuan dan teknologi. Di sini, kamu akan menemukan berbagai artikel menarik dan informatif seputar : Pengetahuan, Pendidikan, Teknologi, dan Lain-lain.

Posting Komentar

Lebih baru Lebih lama