C++ : Sorting dengan metode Bubble Sort

Ditulis oleh robzlabz pada Kamis, 05 April 2012

Pada metode sorting apapun pasti ada 2 perintah yang harus dikerjakan, yaitu perbandingan dan penukaran, ketika data yang dibandingkan diketahui tidak urut maka akan dilakukan penukaran yang akan membuat data urut (sorting)

nah, pada artikel kali ini aku akan menjelaskan sedikit tentang code sorting dan bagaimana codenaya yang ditulis dalam cpp

sebelum menuju metode sorting, kita perlu mengetahui tentang metode penukarannya dulu. Untuk code penukaran adalah sama untuk setiap sorting yaitu


void tukar (int *a, int *b) {
   int tmp;
   tmp = *a;
   *a = *b;
   *b = tmp;
}

 tukar adalah nama functionnya dan void berarti dia tidak memiliki nilai kembalian, walau tidak mempunyai nilai kembalian namun data a dan b akan bertukar posisi ketika fungsi tukar ini di panggil

oke, kita sekarang masuk ke metode bubble sort
metode gelembung/bubble sort dapat dituliskan sebagai berikut

1 i    0 
2  selama (i < N-1) kerjakan baris 3 sampai dengan 7 
3 j    N - 1 
4  Selama (j >= i) kerjakan baris 5 sampai dengan 7 
5  Jika (Data[j-1] > Data[j]) maka tukar Data[j-1] dengan Data[j] 
6 j    j - 1 
7 i    i + 1 

bila alogaritma diatas di aplikasikan dalam bentuk cpp maka akan menjadi

int i=0,j;
   while (i<n-1) {
    j = n-1;
      while (j>=i) {
  if (data[j-1]>data[j]) {
          tukar(&data[j-1],&data[j]);
         }
         j--;
      }
      i++;
}

kita juga dapat menuliskannya dalam bentuk perulangan for

for (int i=0;i<n-1;i++) {
   for (int j=n-1;j>=i;j--) {
      if (data[j-1]>data[j]) {
          tukar(&data[j-1],&data[j]);
         }
      }
}

untuk dapat menjalankan code tersbut tentunya kita harus menginisialisasi variabel data dan juga variabel n. untuk variabel n kita akan menentukannya belakangan karena n harus sama dengan jumlah data yang ada di variabel data. jika kita inputkan variabel data dengan  int data [] = {1,10,9,4,3,5,7,3,2,2}; maka kita akan memasukan nilai n dengan 10

sebagai contoh kita memasukan niali array data seperti diatas dan kita akan menggunakan perulangan dengan while maka codenya akan menjadi

#include <iostream>
#include <conio>

int data [] = {1,10,9,4,3,5,7,3,2,2};
int n = 10;

void tukar (int *a, int *b) {
 int tmp;
 tmp = *a;
 *a = *b;
 *b = tmp;
}

main () {
 int i=0,j;
 while (i<n-1) {
 j = n-1;
  while (j>=i) {
   if (data[j-1]>data[j]) {
    tukar(&data[j-1],&data[j]);
   }
   j--;
  }
  i++;
 }
 
 for (int i=0;i<n;i++) {
  cout<<data[i]<<" ";
 }

 getch();
}

kita juga dapat menuliskannya dengan metode perulangan for

#include <iostream>
#include <conio>

int data [] = {1,10,9,4,3,5,7,3,2,2};
int n = 10;

void tukar (int *a, int *b) {
 int tmp;
 tmp = *a;
 *a = *b;
 *b = tmp;
}

main () {
 
 for (int i=0;i<n-1;i++) {
  for (int j=n-1;j>=i;j--) {
   if (data[j-1]>data[j]) {
    tukar(&data[j-1],&data[j]);
   }
  }
 }
 
 for (int i=0;i<n;i++) {
  cout<<data[i]<<" ";
 }

 getch();
}

kedua code tersebut akan menghasilkan hasil yang sama

Sorting dengan Metode Bubble Sort

utuk melihat kemampuan dari bubble sort dalam mengurutkan data dapat dilihat di link  http://www.sorting-algorithms.com/bubble-sort

Metode Bubble sort memiliki jumlah perbandingan (= C) yang tetap yaitu C= (N.N - N ) /2
Lalu untuk penukaran( =M) data tergantung pada keadaan data 
Mmin = 0
Mrata-rata = 3(N.N - N) / 4
Mmax = 3(N.N - N) /2




{ 0 Komentar... read them below or add one }

Posting Komentar

Label Could

Analisa (1) Assembler (4) c (1) cpp (3) Facebook (7) Fun (2) Galau (6) Hacking (1) Hardware (1) Java (7) JavaScript (4) Komik (10) My Family (1) My Life (14) My Way (8) NFC (1) NFC Hacking (1) Php (1) Program (47) Project (1) Script (1) Technology (1) Visual Basic 6 (2) Visual Basic.NET (4) What The Pufh (12)