Bubble Sort


bubble sort

sumber: http://www.algolist.net

Bubble sort adalah algoritma sorting, yang kata orang adalah algoritme termudah (meskipun label termudah ini adalah sesuatu hal yang sangat subjektif). Ide dasar dari algoritme ini adalah, melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. (ngomong opo iki??? :D)

Ok. Sekarang saya coba jelaskan dengan cara yang lebih manusiawi, sebisa saya. Algoritme akan melakukan iterasi (pengulangan). Dalam setiap pengulangan dia akan melakukan pekerjaan sebagai berikut:

  1. Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).
  2. Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
  3. Selesai satu iterasi,  adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
  4. Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.

Contoh:

Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini (ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi:

Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)

Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)

Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)

Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai

Berikut ini adalah contoh program yang saya buat:

/*
  Name: Bubble Sort
  Copyright: windupurnomo.wordpress.com@2009
  Author: Windu Purnomo
  Date: 15/12/09 17:18
  Description: Sample algorithm of sorting (ascending)
*/


#include<stdio.h>

void bubbleSort(int data[], int n){
   int i, j=0, temp, flag = 1;
   while(flag){
      flag = 0;
      for(i=0; i<n; i++){
         if(data[i]>data[i+1]){
            temp = data[i];
            data[i] = data[i+1];
            data[i+1] = temp;
            flag++;
         }
      }
   }
}

main(){
   int data[1000];
   int n, i;
   printf("________.:: BUBBLE SORT ::.________\n");
   printf("Enter numbers of data(maks 1000): ");
   scanf("%d", &n);
   printf("Data (separate by space): ");
   for(i=0; i<n; i++)
      scanf("%d", &data[i]);
   
   bubbleSort(data, n);
   
   printf("\nOutput after sort:\n");
   for(i=0; i<n; i++)
      printf("%d ", data[i]);
   
   getch();
   return 0;
}
About these ads

About windupurnomo

I'm interested in programming. I am active with several programming such as Java, C #, C, JavaScript, HTML. I'm also develop desktop application (Java Swing), Mobile Application (Android), and Web programming (ASP MVC).
This entry was posted in C Language, programming and tagged , , . Bookmark the permalink.

One Response to Bubble Sort

  1. Dion says:

    Mas mau tanya, klo dpetin sertifikasi java dri vendornya dmn ya?
    siipz :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s