Algoritma Pengurutan Seleksi (Selection Sort)

 

Selection sort adalah algoritma pengurutan dengan mencari elemen terkecil pada array, lalu elemen tersebut ditaruh ke indeks paling kiri dalam sebuah array. Langkah tersebut dilakukan berulang-ulang sampai array tersebut terurut.


Langkah - langkah pengurutan seleksi
// asumsikan elemen pertama dalam array adalah elemen dengan angka terkecil, 
// simpan nilai dan indeks elemen tersebut ke dalam variabel sementara

// dengan pengulangan
// cek satu per satu elemen pada array apakah ada yang lebih kecil dari elemen pertama

   // jika iya, simpan nilai dan indeks elemen tersebut ke dalam variabel sementara

// tukarkan elemen yang lebih kecil tersebut 
// dengan elemen pertama(paling kiri) dalam pengulangan

// ulangi langkah-langkah tersebut hingga semua elemen terurut 

Menerjemahkan algoritma tersebut ke bahasa C
// asumsikan elemen pertama dalam array adalah elemen dengan angka terkecil, 
// simpan nilai dan indeks elemen tersebut ke dalam variabel sementara
int smallest = data[i];
int smallest_index = i;
// dengan pengulangan
// cek satu per satu elemen pada array apakah ada yang lebih kecil dari elemen pertama
for (int j = i; j < length; j++)
{
   if (data[j] < smallest)
   {
      // jika iya, simpan nilai dan indeks elemen tersebut ke dalam variabel sementara
      smallest = data[j];
      smallest_index = j;
   }
}
 
// tukarkan elemen yang lebih kecil tersebut 
// dengan elemen pertama(paling kiri) dalam pengulangan
int temp = data[i];
data[i] = smallest;
data[smallest_index] = temp;

Fungsi jadi
void selection_sort(int data[], int length)
{
    for (int i = 0; i < length; i++)
    {
        // asumsikan elemen pertama dalam array adalah elemen dengan angka terkecil, 
        // simpan nilai dan indeks elemen tersebut ke dalam variabel sementara
        int smallest = data[i];
        int smallest_index = i;

        // dengan pengulangan
        // cek satu per satu elemen pada array 
apakah ada yang lebih kecil dari elemen pertama
        for (int j = i; j < length; j++)
        {
            if (data[j] < smallest)
            {
                // jika iya, simpan nilai dan indeks elemen tersebut ke 
dalam variabel sementara
                smallest = data[j];
                smallest_index = j;
            }
        }

        // tukarkan elemen yang lebih kecil tersebut 
        // dengan elemen pertama(paling kiri) dalam pengulangan
        int temp = data[i];
        data[i] = smallest;
        data[smallest_index] = temp;
    }
    // ulangi langkah-langkah tersebut hingga semua elemen terurut
}

Program jadi
#include <stdio.h>

void selection_sort(int data[], int length)
{
    for (int i = 0; i < length; i++)
    {
        int smallest = data[i];
        int smallest_index = i;

        for (int j = i; j < length; j++)
        {
            if (data[j] < smallest)
            {
                smallest = data[j];
                smallest_index = j;
            }
        }

        int temp = data[i];
        data[i] = smallest;
        data[smallest_index] = temp;
    }
}

int main()
{
    int num;
    printf("Masukkan banyaknya data: ");
    scanf("%d", &num);

    int data[num];
    for (int i = 0; i < num; i++)
    {
        printf("Data ke-%d: ", i);
        scanf("%d", &data[i]);
    }

    selection_sort(data, num);

    for (int i = 0; i < num; i++)
    {
        printf("%d ", data[i]);
    }

    return 0;
}

1 comments:

Artikelnya bermanfaat kak, ini saya juga punya artikel tentang selection sort, semoga dapat saling melengkapi

Selection Sort dalam Bahasa C (Materi + Koding)

Reply

Post a Comment