Kamis, 21 Februari 2013

bubble sorting

Diberi nama “Bubble” karena proses pengurutan secara berangsur angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.
Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.Jika elemen sekarang lebih besardari elemen berikutnya maka kedua elemen tersebut ditukar (untuk pengurutan ascending).
Jika elemen sekarang lebih kecildari elemen berikutnya, maka kedua elemen tersebut ditukar (untuk pengurutan descending).Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikianseterusnya.
Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Contoh pengurutan data yang dilakukan dengan metode Bubble Sort sebagai berikut:
Proses 1:
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8
Pengecekandimulaidari data yang paling akhir, kemudiandibandingkandengan data di depannya, jika data di depannyalebihbesarmakaakanditukar.
Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8
Pengecekandilakukansampaidengan data ke-2 karena data pertamapastisudah paling kecil.
Proses 3:
2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15
Proses 4:
2 3 8 22 10 15
2 3 8 22 10 15
2 3 8 10 22 15
Proses 5:
2 3 8 10 22 15
2 3 8 10 15 22
Pengurutan berhenti.

berikut programnya c++ bubble sort:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

bubble_acak()
{
    clrscr();
    int arr[1000];
    int x, i; //untuk array
   int s, t, temp; //untuk sorting

   //input jumlah data yang diproses
   cout<<"angka yang akan dimasukkan : "; cin>>x;

   //input nilai masing" array
   srand(time(NULL));
   for (i=0; i<x; i++)
      arr[i] = rand() %1000;

   //output nilai" array
   clrscr();
   cout<<"====== array ======"<<endl<<endl;
    cout<<"angka angkanya :"<<endl;
   for (i=0; i<x; i++)
      cout<<arr[i]<<", ";


   //sorting
   cout<<endl<<endl<<endl<<endl;
   cout<<"====== sorting ======"<<endl<<endl;
   s = 0;
   for (s=0; s<x; s++)
       {
      for (t = s+1; t<x; t++)
         {
              if (arr[s]>arr[t])
             {
               temp = arr[s];
                    arr[s] = arr[t];
                 arr[t] = temp;
             }
         }
      }
   cout<<"setelah sorting :"<<endl;
   for (i=0; i<x; i++)
      cout<<arr[i]<<", ";

   getch();
}


bubble_manual()
{
    clrscr();
    int arr[1000];
    int x, i; //untuk array
   int s, t, temp; //untuk sorting

   //input jumlah data yang diproses
   cout<<"angka yang akan dimasukkan : "; cin>>x;

   //input nilai masing" array
   for (i=0; i<x; i++)
       {
      cout<<"masukkan angka ke-"<<i<<" : ";
      cin>>arr[i];
      }

   //output nilai" array
   clrscr();
   cout<<"====== array ======"<<endl<<endl;
    cout<<"angka angkanya :"<<endl;
   for (i=0; i<x; i++)
      cout<<arr[i]<<", ";


   //sorting
   cout<<endl<<endl<<endl<<endl;
   cout<<"====== sorting ======"<<endl<<endl;
   s = 0;
   for (s=0; s<x; s++)
       {
      for (t = s+1; t<x; t++)
         {
              if (arr[s]>arr[t])
             {
               temp = arr[s];
                    arr[s] = arr[t];
                 arr[t] = temp;
             }
         }
      }
   cout<<"setelah sorting :"<<endl;
   for (i=0; i<x; i++)
      cout<<arr[i]<<", ";

   //mission complete
   getch();
}


main ()
{
    int pilih;
   char ulang;

   do
   {
      clrscr ();
       cout<<"tekan 1 : bilangan yang disorting dimasukan secara acak"<<endl;
       cout<<"tekan 2 : bilangan yang disorting dimasukan secara manual"<<endl;
       cout<<"masukkan pilihan : "; cin>>pilih;

      switch (pilih)
      {
          case 1:
             bubble_acak();
         break;

         case 2:
             bubble_manual();
         break;

         default:
            clrscr();
            cout<<"\"maaf\""<<endl;
             cout<<"\"pilihan yang dimasukkan salah\"";
         break;
      }
      cout<<endl<<endl<<"tekan \"Y\" lalu \"ENTER\" untuk ulang ---> "; cin>>ulang;
   }
   while (ulang=='Y');
}

Tidak ada komentar:

Posting Komentar