
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 :


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);
}
}