Bubble Sort
Metode gelembung (bubble sort) sering juga disebut dengan metode
penukaran (exchange sort) adalah metode yang mengurutkan data dengan
cara membandingkan masing-masing elemen, kemudian melakukan
penukaran bila perlu. Metode ini mudah dipahami dan diprogram,
tetapi bila dibandingkan dengan metode lain yang kita pelajari,
metode ini merupakan metode yang paling tidak efisien.
Proses pengurutan metode gelembung ini menggunakan dua kalang. Kalang pertama melakukan pengulangan dari elemen ke 2 sampai dengan elemen ke N-1 (misalnya variable i), sedangkan kalang kedua melakukan pengulangan menurun dari elemen ke N sampai elemen ke i (misalnya variable j). Pada setiap pengulangan, elemen ke j-1 dibandingkan dengan elemen ke j. Apabila data ke j-1 lebih besar daripada data ke j, dilakukan penukaran.
Proses pengurutan metode gelembung ini menggunakan dua kalang. Kalang pertama melakukan pengulangan dari elemen ke 2 sampai dengan elemen ke N-1 (misalnya variable i), sedangkan kalang kedua melakukan pengulangan menurun dari elemen ke N sampai elemen ke i (misalnya variable j). Pada setiap pengulangan, elemen ke j-1 dibandingkan dengan elemen ke j. Apabila data ke j-1 lebih besar daripada data ke j, dilakukan penukaran.
Algoritma gelembung 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
Di bawah ini merupakan prosedur yang menggunakan metode gelembung:
void BubbleSort()
{
int i, j;
for(i=1; i<Max-1; i++)
for(j=Max-1; j>=i; j--)
if(Data[j-1] > Data[j])
Tukar(&Data[j-1], &Data[j]);
}
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
Di bawah ini merupakan prosedur yang menggunakan metode gelembung:
void BubbleSort()
{
int i, j;
for(i=1; i<Max-1; i++)
for(j=Max-1; j>=i; j--)
if(Data[j-1] > Data[j])
Tukar(&Data[j-1], &Data[j]);
}