Bubble Short

Pengenalan algoritma Bubble Short dalam bentuk video dapat disimak di tautan ini https://youtu.be/6sUpCaXjWls. Kemudian bagaimana proses ‘ngoding’-nya dari awal sampai selesai dapat disimak di tautan ini https://youtu.be/OMCy0p6BGRo.

Hasil ‘coding’ Bubble Short dapat dilihat pada program berikut:

/* ---------------------------------------------------
 * program bubble short menggunakan bahasa C++
 * dibuat oleh dwi sakethi
 * 9 desember 2020
 * program ini digunakan untuk mengurutkan data array
 * dari angka kecil ke angka besar
 * proses ngodingnya dapat disimak di youtube
 * 
 * ---------------------------------------------------
 * */
 
// menentukan jumlah data maksimum
#define jumlah_data 7

// karena ada cout, maka perlu ini
#include <iostream>

// ini sebenarnya tidak dianjurkan
using namespace std;

// program bahasa C++ paling tidak terdiri dari
// satu fungsi, yaitu fungsi main()
int main()
{
	
// deklarasi variabel yang digunakan di dalam program
int baris,kanan;
int angka_kiri,angka_kanan;
float nilai_sementara;
float nilai[jumlah_data];

// data ditulis di sini, supaya tidak capai memasukkan data
// melalui keyboard
nilai[0] = 7.5;
nilai[1] = 3.2;
nilai[2] = 5.5;
nilai[3] = 9.5;
nilai[4] = 3.1;
nilai[5] = 8.0;
nilai[6] = 6.5;

/* --------------------------------------------------
 * menampilkan data awal
 * -------------------------------------------------- */

cout << "Sebelum di-sorting " <<endl;

for(baris=0;baris<jumlah_data;baris++)
{
  cout << "Nilai : "<< nilai[baris]<<endl;
}

// proses bubble short dari kecil ke besar
for (baris=1;baris<jumlah_data;baris++)
{
  kanan = jumlah_data+1-baris;
  cout << baris << " - " << kanan << " : ";
  for (angka_kiri=1;angka_kiri<kanan;angka_kiri++)
  {
    angka_kanan = angka_kiri+1;
    cout << angka_kiri << " - " << angka_kanan << "  ";
	
	/* -------------------------------------------------
	   jika data di sebelah kiri lebih besar dari data
	   di sebelah kanan, maka posisinya ditukar
	   ------------------------------------------------- */
    if (nilai[angka_kiri-1]>nilai[angka_kanan-1])
      {
         nilai_sementara      = nilai[angka_kiri-1];
	     nilai[angka_kiri-1]  = nilai[angka_kanan-1];
	     nilai[angka_kanan-1] = nilai_sementara;
      }
  }
  cout << endl;
}

cout << "Setelah di-sorting " <<endl;
for(baris=0;baris<jumlah_data;baris++)
{
  cout << "Nilai : "<< nilai[baris]<<endl;
}

// akhir program
// karena int main(), jadi boleh diisi dengan 1
return 1;
}

Sedangkan alternatif lain proses pengurutan, dapat juga disimak pada ‘coding’ berikut ini:

/* -------------------------------------------------------------
   contoh ini telah di-compile pada sistem operasi Linux 
   dengan compiler gcc. nama file buble.c
   perintah compile : gcc buble.c -o buble -lm        
   jika tidak ada kesalahan, program dapat dijalankan dengan 
   memberikan perintah:

   ./buble

   #dwi sakethi 26 agustus 2018         
   ------------------------------------------------------------- */

// menyertakan library untuk mencetak data ke layar
#include <stdio.h>

// misalkan banyaknya data maksimal yang akan diolah ada 100 data
#define jumlah_data_maksimum 100

int main()
{
   int banyak_data;
   int data[jumlah_data_maksimum];
   int data_ke,data_setelah,bilangan_sementara;
   
   // menghapus layar
   // system("clear");

   // menanyakan banyaknya data
   printf("Banyaknya data: ");
   scanf("%d",&banyak_data);

   // looping pemasukan data
   for (data_ke=0;data_ke<banyak_data;data_ke++)
       {
        // memasukkan data ke-?
        printf("Masukkan data ke-%d : ",data_ke+1);
        scanf("%d",&data[data_ke]);

       }
   
/* pengurutan data dengan metode buble sort */

/* -------------------------------------------------
   pembandingan dilakukan dari data pertama 
   sampai dengan data terakhir-1 
   karena perbandingan terakhir adalah perbandingan
   antara data terakhir-1 dengan data terakhir
   0-1 0-2 0-3 0-4 
       1-2 1-3 1-4
           2-3 2-4
               3-4
   terlihat bahwa nilai yang sebelah kiri, 
   nilai terbesarnya adalah 3 (untuk contoh 5 data)
   sehingga batas loopingnya banyak_data-2 
   karena array dimulai dari angka 0,
   maka akhir looping harus dikurangi lagi
   ------------------------------------------------- */

/* -------------------------------------------------
   langkah pertama adalah membuat looping dengan 
   hasil angka seperti berikut: 
   0-1 0-2 0-3 0-4 
       1-2 1-3 1-4
           2-3 2-4
               3-4
   ------------------------------------------------- */

  for (data_ke=0;data_ke<=banyak_data-2;data_ke++)
   for (data_setelah=data_ke+1;
        data_setelah<=banyak_data-1;data_setelah++)

/* mengurutkan data dari kecil ke besar */
   if (data[data_setelah]<data[data_ke])

/* ditukar tempatnya, misal data[0] = 11 dan data[1]=6
   maka ditukar sehingga menjadi data[0]=6 data[1]=11  */
      {
         bilangan_sementara = data[data_ke];
         data[data_ke]      = data[data_setelah];
         data[data_setelah] = bilangan_sementara;
      }

/* cetak data hasil sorting */
   printf("Data hasil sorting dengan Bubble Short: \n");   
   for (data_ke=0;data_ke<=banyak_data-1;data_ke++)
       printf(" %2d  :  %2d \n",data_ke+1,data[data_ke]);

  // karena int main, maka harus ada return
  return 0;   
}