Pengurutan Gelembung (Bubble Sort) - Algoritma dan Pemograman

Algoritma dan Pemograman

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]

Pengurutan (Sorting)

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);
    }
}
4or Education

4or Education hadir sebagai blog edukasi yang menemanimu menjelajahi samudra ilmu pengetahuan dan teknologi. Di sini, kamu akan menemukan berbagai artikel menarik dan informatif seputar : Pengetahuan, Pendidikan, Teknologi, dan Lain-lain.

Posting Komentar

Lebih baru Lebih lama