Penggabungan Array Secara Terurut - Algoritma dan Pemograman

Algoritma dan Pemograman

Penggabungan array secara terurut adalah penggabungan array yang dilakukan dengan mengurutkan isi array pertama dan isi array kedua, selanjutnya menggabungkan kedua isi array tersebut ke array ketiga dengan membandingkan kedua isi array tersebut agar penggabungan menjadi terurut. Hal yang perlu diperhatikan dalam proses penggabungan ini adalah indeks dari masing-masing array tersebut dan proses pengurutannya. Berikut adalah ilustrasi penggabungan array secara terurut :

Proses Pengurutan Dua Array

Penggabungan Array Secara Terurut

Berikut adalah contoh penggabungan array secara terurut beserta penulisannya dalam bahasa algoritmik dan beberapa bahasa pemograman :

1. Bahasa Algoritmik

{ Prosedur untuk menampilkan data pada array }
procedure showData(tab : array of integer; batas : integer);

{ Deklarasi variabel prosedur showData }
    i       : integer

{ Bagian utama prosedur showData }
    for i := 0 to batas do
        output(tab[i], ' ')

    output('\n')

{ Deklarasi variabel program utama
 sekaligus memberi nilai pada tab1 dan tab2 }
    tab1    : array[0..4] of integer = (3, 1, 2, 7, 5)
    tab2    : array[0..2] of integer = (8, 4, 6)
    tab3    : array[0..7] of integer;
    i       : integer;
    { p adalah penghitung indeks masing-masing array }
    p1      : integer;
    p2      : integer;
    p3      : integer;

{ Bagian program utama }
    { Mengurutkan data pada tab1 dan tab2 }
    ... Lakukan Mekanisime Pengurutan ...

    { Memberi nilai awal pada p1, p2, dan p3 }
    p1 <- 0
    p2 <- 0
    p3 <- 0

    { Proses penggabungan array secara terurut }
    while ((p1 < 5) and (p2 < 3)) do
        if (tab1p1 < tab2p2)
            tab3p3 <- tab1p1
            p1 <- p1 + 1
            p3 <- p3 + 1
        else if (tab2p2 < tab1p1)
            tab3p3 <- tab2p2
            p2 <- p2 + 1
            p3 <- p3 + 1
        else
            tab3p3 <- tab1p1
            p1 <- p1 + 1
            p3 <- p3 + 1

            tab3p3 <- tab2p2
            p2 <- p2 + 1
            p3 <- p3 + 1

    if (p1 = 5)
        for i := p2 to 2 do
            tab3p3 <- tab2i
            p3 <- p3 + 1
        
    if (p2 = 3)
        for i := p1 to 4 do
            tab3p3 <- tab1i
            p3 <- p3 + 1
 
    { Menampilkan data pada tab1, tab2, dan tab3 }
    showData(tab1, 4)
    showData(tab2, 2)
    showData(tab3, 7)

2. Bahasa Pascal

program penggabungan;

{ Prosedur untuk menampilkan data pada array }
procedure showData(tab : array of integer; batas : integer);

{ Deklarasi variabel prosedur showData }
var
    i       : integer;

{ Bagian utama prosedur showData }
begin
    for i := 0 to batas do
    begin
        write(tab[i], ' ');
    end;

    writeln();
end;

{ Deklarasi variabel program utama
 sekaligus memberi nilai pada tab1 dan tab2 }
var
    tab1    : array[0..4] of integer = (3, 1, 2, 7, 5);
    tab2    : array[0..2] of integer = (8, 4, 6);
    tab3    : array[0..7] of integer;
    i       : integer;
    j       : integer;
    sisip   : integer;
    { p adalah penghitung indeks masing-masing array }
    p1      : integer;
    p2      : integer;
    p3      : integer;

{ Bagian program utama }
begin
    { Mengurutkan data pada tab1 dan tab2 }
    for i := 0 to 4 do
    begin
        sisip := tab1[i];
        j := i-1;

        while ((j >= 0) and (sisip < tab1[j])) do
        begin
            tab1[j+1] := tab1[j];
            j := j-1;
        end;

        tab1[j+1] := sisip;
    end;

    for i := 0 to 2 do
    begin
        sisip := tab2[i];
        j := i-1;

        while ((j >= 0) and (sisip < tab2[j])) do
        begin
            tab2[j+1] := tab2[j];
            j := j-1;
        end;

        tab2[j+1] := sisip;
    end;

    { Memberi nilai awal pada p1, p2, dan p3 }
    p1 := 0;
    p2 := 0;
    p3 := 0;

    { Proses penggabungan array secara terurut }
    while ((p1 < 5) and (p2 < 3)) do
    begin
        if (tab1[p1] < tab2[p2]) then
        begin
            tab3[p3] := tab1[p1];
            p1 := p1 + 1;
            p3 := p3 + 1;
        end
        else if (tab2[p2] < tab1[p1]) then
        begin
            tab3[p3] := tab2[p2];
            p2 := p2 + 1;
            p3 := p3 + 1;
        end
        else
        begin
            tab3[p3] := tab1[p1];
            p1 := p1 + 1;
            p3 := p3 + 1;

            tab3[p3] := tab2[p2];
            p2 := p2 + 1;
            p3 := p3 + 1;
        end;
    end;
    
    if (p1 = 5) then
    begin
        for i := p2 to 2 do
        begin
            tab3[p3] := tab2[i];
            p3 := p3 + 1;
        end;
    end;

    if (p2 = 3) then
    begin
        for i := p1 to 4 do
        begin
            tab3[p3] := tab1[i];
            p3 := p3 + 1;
        end;
    end;

    { Menampilkan data pada tab1, tab2, dan tab3 }
    showData(tab1, 4);
    showData(tab2, 2);
    showData(tab3, 7);
end.

3. Bahasa C++

#include <iostream>
using namespace std;

// Prosedur untuk menampilkan data pada array
void showData(int tab[], int batas)
{
    // Deklarasi variabel prosedur showData
    int i;

    for (i = 0; i < batas; i++)
    {
        cout << tab[i] << " ";
    }

    cout << endl;
}

// Prosedur untuk mengurutkan data pada array
void sortData(int tab[], int batas)
{
    // Deklarasi variabel prosedur sortData
    int i;
    int j;
    int sisip;

    // Proses pengurutan dengan metode penyisipan
    for (i = 0; i < batas; i++)
    {
        sisip = tab[i];
        j = i-1;

        while ((j >= 0) && (sisip < tab[j]))
        {
            tab[j+1] = tab[j];
            j = j-1;
        }

        tab[j+1] = sisip;
    }
}

// Bagian program utama
int main() {
    /* Deklarasi variabel program utama
     sekaligus memberi nilai pada tab1 dan tab2 */
    int tab1[5] = {3, 1, 2, 7, 5};
    int tab2[3] = {8, 4, 6};
    int tab3[8];
    int i;
    // p adalah penghitung indeks masing-masing array
    int p1;
    int p2;
    int p3;

    // Mengurutkan data pada tab1 dan tab2
    sortData(tab1, 5);
    sortData(tab2, 3);

    // Memberi nilai awal pada p1, p2, dan p3
    p1 = 0;
    p2 = 0;
    p3 = 0;

    // Proses penggabungan array secara terurut
    while ((p1 < 5) && (p2 < 3))
    {
        if (tab1[p1] < tab2[p2])
        {
            tab3[p3] = tab1[p1];
            p1 = p1 + 1;
            p3 = p3 + 1;
        } else if (tab2[p2] < tab1[p1])
        {
            tab3[p3] = tab2[p2];
            p2 = p2 + 1;
            p3 = p3 + 1;
        } else
        {
            tab3[p3] = tab1[p1];
            p1 = p1 + 1;
            p3 = p3 + 1;

            tab3[p3] = tab2[p2];
            p2 = p2 + 1;
            p3 = p3 + 1;
        }
    }
    
    if (p1 == 5) 
    {
        for (i = p2; i < 3; i++)
        {
            tab3[p3] = tab2[i];
            p3 = p3 + 1;
        }
    }

    if (p2 == 3)
    {
        for (i = p1; i < 5; i++)
        {
            tab3[p3] = tab1[i];
            p3 = p3 + 1;
        }
    }

    // Menampilkan data pada tab1, tab2, dan tab3
    showData(tab1, 5);
    showData(tab2, 3);
    showData(tab3, 8);

    return 0;
}

4. Bahasa Java

public class Main
{
    // Method untuk menampilkan data pada array
    public static void showData(int tab[], int batas)
    {
        // Deklarasi variabel method showData
        int i;

        for (i = 0; i < batas; i++)
        {
            System.out.print(tab[i] + " ");
        }

        System.out.println();
    }

    // Method untuk mengurutkan data pada array
    public static void sortData(int tab[], int batas)
    {
        // Deklarasi variabel method sortData
        int i;
        int j;
        int sisip;

        // Proses pengurutan dengan metode penyisipan
        for (i = 0; i < batas; i++)
        {
            sisip = tab[i];
            j = i-1;

            while ((j >= 0) && (sisip < tab[j]))
            {
                tab[j+1] = tab[j];
                j = j-1;
            }

            tab[j+1] = sisip;
        }
    }


    // Bagian program utama
    public static void main(String[]args)
    {
        /* Deklarasi variabel program utama
         sekaligus memberi nilai pada tab1 dan tab2 */
        int tab1[] = {3, 1, 2, 7, 5};
        int tab2[] = {8, 4, 6};
        int tab3[] = new int[8];
        int i;
        // p adalah penghitung indeks masing-masing array
        int p1;
        int p2;
        int p3;

        // Mengurutkan data pada tab1 dan tab2
        sortData(tab1, 5);
        sortData(tab2, 3);

        // Memberi nilai awal pada p1, p2, dan p3
        p1 = 0;
        p2 = 0;
        p3 = 0;

        // Proses penggabungan array secara terurut
        while ((p1 < 5) && (p2 < 3))
        {
            if (tab1[p1] < tab2[p2])
            {
                tab3[p3] = tab1[p1];
                p1 = p1 + 1;
                p3 = p3 + 1;
            } else if (tab2[p2] < tab1[p1])
            {
                tab3[p3] = tab2[p2];
                p2 = p2 + 1;
                p3 = p3 + 1;
            } else
            {
                tab3[p3] = tab1[p1];
                p1 = p1 + 1;
                p3 = p3 + 1;

                tab3[p3] = tab2[p2];
                p2 = p2 + 1;
                p3 = p3 + 1;
            }
        }
        
        if (p1 == 5)
        {
            for (i = p2; i < 3; i++)
            {
                tab3[p3] = tab2[i];
                p3 = p3 + 1;
            }
        }
        
        if (p2 == 3)
        {
            for (i = p1; i < 5; i++)
            {
                tab3[p3] = tab1[i];
                p3 = p3 + 1;
            }
        }

        // Menampilkan data pada tab1, tab2, dan tab3
        showData(tab1, 5);
        showData(tab2, 3);
        showData(tab3, 8);
    }
}
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