Algoritma Pengurutan Apung dalam Bahasa C (Bubble Sort)

Algoritma pengurutan ini membandingkan dua buah elemen yang bersebelahan lalu dilakukan penukaran jika urutannya tidak sesuai. Perhatikan animasi di bawah ini.
http://en.wikipedia.org/wiki/Bubble_sort

Fungsi penukaran:
void tukar(int* x, int* y)
{
   int temp = *x;
   *x = *y;
   *y = temp;
}

Algoritma fungsi bubble sort:
// mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut

   // inisialisasi variabel penukaran menjadi 0, 
   // sebagai penanda bahwa tidak ada penukaran sebelumnya.
   // mengecek dua buah elemen hingga ujung array
      // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan, 
      // maka terjadi penukaran
      
         // inisialisasi variabel penukaran menjadi 1, 
         // sebagai penanda bahwa terjadi penukaran.

// pengurutan terjadi selama terjadi penukaran pada setiap loop.

Menerjemahkan algoritma tersebut ke bahasa pemrograman C:
int penukaran;

// mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut
do
{
   // inisialisasi variabel penukaran menjadi 0, 
   // sebagai penanda bahwa tidak ada penukaran sebelumnya.
   penukaran = 0;



}
while (penukaran)
// pengurutan terjadi selama ada penukaran pada setiap loop.

// mengecek dua buah elemen hingga ujung array
for (int i = 0; i < length - 1; i++)
{
   // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan, 
   // maka terjadi penukaran
   if (array[i] > array[i + 1])
   {
      tukar(&array[i], &array[i + 1]);

      // inisialisasi variabel penukaran menjadi 1, 
      // sebagai penanda bahwa terjadi penukaran
      penukaran = 1;
   }
}

Fungsi jadi:
void bubble_sort(int array[], int length)
{
   int penukaran;

   // mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut
   do
   {
      // inisialisasi variabel penukaran menjadi 0, 
      // sebagai penanda bahwa tidak ada penukaran sebelumnya.
      penukaran = 0;
      
     // mengecek dua buah elemen hingga ujung array
      for (int i = 0; i < length - 1; i++)
      {
         // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan,
         // maka terjadi penukaran
         if (array[i] > array[i + 1])
         {
            tukar(&array[i], &array[i + 1]);

            // inisialisasi variabel penukaran menjadi 1, 
            // sebagai penanda bahwa terjadi penukaran
            penukaran = 1;
         }
      }
   }
   while (penukaran);
   // pengurutan terjadi selama ada penukaran pada setiap loop.
}

Program jadi:
#include <stdio.h>

void tukar(int* x, int* y)
{
   int temp = *x;
   *x = *y;
   *y = temp;
}

void bubble_sort(int array[], int length)
{
    int penukaran;

   // mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut
   do
   {
      // inisialisasi variabel penukaran menjadi 0, 
      // sebagai penanda bahwa tidak ada penukaran sebelumnya.
      penukaran = 0;

     // mengecek dua buah elemen hingga ujung array
      for (int i = 0; i < length - 1; i++)
      {
         // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan,
         // maka terjadi penukaran
         if (array[i] > array[i + 1])
         {
            tukar(&array[i], &array[i + 1]);

            // inisialisasi variabel penukaran menjadi 1, 
            // sebagai penanda bahwa terjadi penukaran
            penukaran = 1;
         }
      }
   }
   while (penukaran);
   // pengurutan terjadi selama ada penukaran pada setiap loop.
}

int main()
{
    // input jumlah elemen;
    int num;
    printf("Input jumlah elemen: ");
    scanf("%d", &num);

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

    // lakukan pengurutan
    bubble_sort(data, num);

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

Animasi bubble sort


1 comments:

Artikelnya menarik kak, ini saya juga punya artikel tentang Bubble Sort, semoga dapat saling melengkapi

Bubble Sort dalam Bahasa C (Materi + Koding)

Reply

Post a Comment