
Pengurutan gelembung (Bubble Sort) adalah metode pengurutan data yang menukar
dua buah data secara terus menerus sampai data tersebut menjadi terurut.
Berikut contoh proses pengurutan metode gelembung dan ilustrasinya :
Data Awal :
[3, 7, 2, 1, 5, 4, 6]
Perulangan ke-1
[3, 7, 2, 1, 5, 4, 6]
[3, 7, 2, 1, 5, 4, 6]
[3, 2, 7, 1, 5, 4, 6]
[3, 2, 1, 7, 5, 4, 6]
[3, 2, 1, 5, 7, 4, 6]
[3, 2, 1, 5, 4, 7, 6]
Perulangan ke-2
[3, 2, 1, 5, 4, 6, 7]
[2, 3, 1, 5, 4, 6, 7]
[2, 1, 3, 5, 4, 6, 7]
[2, 1, 3, 5, 4, 6, 7]
[2, 1, 3, 4, 5, 6, 7]
Perulangan ke-3
[2, 1, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
Perulangan ke-4
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
Perulangan ke-5
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
Perulangan ke-6
[1, 2, 3, 4, 5, 6, 7]

Berikut adalah contoh pengurutan gelembung beserta penulisannya dalam bahasa
algoritmik dan beberapa bahasa pemograman :
1. Bahasa Algoritmik
{ Prosedur menampilkan data }
procedure showData(tab : array of integer; batas : integer)
{ Deklarasi variabel prosedur }
i : integer;
for i := 0 to batas do
output(tabi, ' ')
output('\n')
{ Deklarasi variabel utama dan sekaligus memberi nilai pada data }
i : integer
j : integer
temp : integer
data : array[0..6] of integer = (3, 7, 2, 1, 5, 4, 6)
batas : integer
{ Bagian program utama }
{ Memberi masukan ke dalam variabel batas }
batas <- length(data)-1
{ Menampilkan data yang belum terurut }
showData(data, batas)
{ Proses pengurutan metode gelembung }
for i := 0 to (batas-1) do
for j := 0 to (batas-i-1) do2. Bahasa Pascal
{ Pengurutan menaik }
if (datai > dataj+1)
{ Proses pertukaran data }
temp <- dataj
dataj <- dataj+1
dataj+1 <- temp
{ Menampilkan data yang sudah terurut }
showData(data, batas)
2. Bahasa Pascal
program gelembung;
{ Prosedur menampilkan data }
procedure showData(tab : array of integer; batas : integer);
{ Dekalarasi variabel prosedur }
var
i : integer;
begin
for i := 0 to batas do
begin
write(tab[i], ' ');
end;
writeln();
end;
{ Dekalarasi variabel utama dan sekaligus memberi nilai pada data }
var
i : integer;
j : integer;
temp : integer;
data : array[0..6] of integer = (3, 7, 2, 1, 5, 4, 6);
batas : integer;
{ Bagian program utama }
begin
{ Memberi masukan ke dalam variabel batas }
batas := length(data)-1;
{ Menampilkan data yang belum terurut }
showData(data, batas);
{ Proses pengurutan metode gelembung }
for i := 0 to (batas-1) do
begin
for j := 0 to (batas-i-1) do
begin
{ Pengurutan menaik }
if (data[j] > data[j+1]) then
begin
{ Proses pertukaran data }
temp := data[j];
data[j] := data[j+1];
data[j+1] := temp;
end;
end;
end;
{ Menampilkan data yang sudah terurut }
showData(data, batas);
end.
3. Bahasa C++
#include <iostream>
using namespace std;
// Prosedur menampilkan data
void showData(int tab[], int batas)
{
// Deklarasi variabel prosedur
int i;
for (i = 0; i < batas; i++)
{
cout << tab[i] << " ";
}
cout << endl;
}
// Bagian program utama
int main()
{
// Deklarasi variabel utama dan sekaligus memberi nilai pada data
int i;
int j;
int temp;
int data[7] = {3, 7, 2, 1, 5, 4, 6};
int batas;
// Memberi masukan ke dalam variabel batas
batas = sizeof(data)/sizeof(data[0]);
// Menampilkan data yang belum terurut
showData(data, batas);
// Proses pengurutan metode gelembung
for (i = 0; i < (batas-1); i++)
{
for (j = 0; j < (batas-i-1); j++)
{
// Pengurutan menaik
if (data[j] > data[j+1])
{
// Proses pertukaran data
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
// Menampilkan data yang sudah terurut
showData(data, batas);
// Mengembalikan nilai
return 0;
}
4. Bahasa Java
public class Main
{
// Blok method menampilkan data
public static void showData(int tab[], int batas)
{
// Deklarasi variabel method
int i;
for (i = 0; i < batas; i++)
{
System.out.print(tab[i] + " ");
}
System.out.println();
}
// Bagian program utama
public static void main(String[]args)
{
// Deklarasi variabel utama dan sekaligus memberi nilai pada data
int i;
int j;
int temp;
int[] data = {3, 7, 2, 1, 5, 4, 6};
int batas;
// Memberi masukan ke dalam variabel batas
batas = data.length;
// Menampilkan data yang belum terurut
showData(data, batas);
// Proses pengurutan metode gelembung
for (i = 0; i < (batas-1); i++)
{
for (j = 0; j < (batas-i-1); j++)
{
// Pengurutan menaik
if (data[j] > data[j+1])
{
// Proses pertukaran data
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
// Menampilkan data yang sudah terurut
showData(data, batas);
}
}