Deskripsi Untuk Soal Nomor 37 dan 39
Perhatikan potongan program berikut:
procedure swap(a,b,c:integer);
var
temp : array[1..20]:integer;
i,j : integer;
begin
j := 1;
for i := b+1 to c do
begin
temp[j] := x[i];
j := j+1;
end;
for i := a to b do
begin
temp[j] := x[i];
j := j+1;
end;
j := 1;
for i := a to c do
begin
x[i] := temp[j];
j := j+1;
end;
end;Jika array x berisi (1,2,3,4,5,6). Dan dilakukan pemanggilan swap(2,4,6) maka akan menghasilkan output :
A. 1,6,5,4,3,2
B. 1,5,6,4,2,3
C. 1,4,5,6,2,3
D. 1,5,6,2,3,4
E. 1,2,5,6,3,4
Jika array x berisi (6,4,3,5,1,2). Dan dilakukan pemanggilan swap(1,2,4) dan swap(3,4,5) maka akan menghasilkan output :
A. 3,5,1,4,6,2
B. 4,3,1,5,6,2
C. 1,3,6,4,5,2
D. 4,3,5,1,6,2
E. 3,5,1,6,4,2
Jika array x berisi (5, 8, 10, 11, 25, 30, 33, 42, 49, 54, 63, 64, 66, 75, 78, 84, 93, 96). Dan diinginkan baris tersebut tersusun terbalik. Berapa kali minimal pemanggilan swap dilakukan?
A. 16
B. 17
C. 18
D. 19
E. 20
TOKI Pelatnas 2013
swap(a,b,c)
swap ini sama seperti algorithma swap , hanya saja kali ini kita akan menggunakannya dalam bentuk lebih dari 1 object.
fungsi dari procedure swap adalah mengganti object tanpa merubah pola barisannya.
(1,2,3,4,5,6) Swap(a,b,c)
contoh swap(2,4,6)
langkah pertama
simpan dummy 1 ( b+1 sampai c ) yaitu (1,2,3,4,[5,6])
simpan dummy 2 ( a sampai b ) yaitu (1,[2,3,4],5,6)
kemudian swap kedua pola dalam kurung tersebut
jadinya (1,[5,6],[2,3,4])
1,5,6,2,3,4
==============================================================================
Nomer 37
(1,2,3,4,5,6) swap(2,4,6)
(1,[2,3,4],[5,6])
(1,[5,6],[2,3,4])
1,5,6,2,3,4
Jawaban = D. 1,5,6,2,3,4
===============================================================================
Nomer 38
array berukuran kecil, masih bisa dikerjakan secara manual.
(6,4,3,5,1,2) swap(1,2,4)
([6,4],[3,5],1,2)
([3,5],[6,4],1,2)
(3,5,6,4,1,2) -> swap(3,4,5)
(3,5,[6,4],[1],2)
(3,5,[1],[6,4],2)
(3,5,1,6,4,2)
Jawaban = E. 3,5,1,6,4,2
================================================================================
Nomer 39
Untuk soal ini sedikit dibuat lebih sulit. karena Solusi harus menggunakan algoritma sort , terlebih lagi kita harus meminimal lisir jawaban
saya gunakan teknik seperti merge sort.
dengan cara membagi 2 tiap pemanggilan swap menggunakan rekursif dibelah dibelai --"
jadi banyaknya data N = 18 ( pada soal )
(5, 8, 10, 11, 25, 30, 33, 42, 49, 54, 63, 64, 66, 75, 78, 84, 93, 96)
frequensi data sekarang = 18
bagi 2 ambil tengah nya yaitu swap(1,n/2,n) atau swap(1,9,18)
([5, 8, 10, 11, 25, 30, 33, 42, 49], [54, 63, 64, 66, 75, 78, 84, 93, 96])
([54, 63, 64, 66, 75, 78, 84, 93, 96], [5, 8, 10, 11, 25, 30, 33, 42, 49])
nah setelah membagi 2 dan melakukan swap .
pisahkan rekursif mereka dengan membagi dua lagi seterusnya sampai dengan tersisa 1 angka
[54, 63, 64, 66, 75, 78, 84, 93, 96] ==== [5, 8, 10, 11, 25, 30, 33, 42, 49]
([54, 63, 64, 66, 75],[78, 84, 93, 96])
([78, 84, 93, 96],[54, 63, 64, 66,75])
bagi 2 lagi
([78, 84, 93, 96] ===== [54, 63, 64, 66,75])
([78,84],[93,96])
([93,96],[78,84])
bagi 2 lagi
([93,96] ===== [78,84])
([93],[96])
bagi 2 lagi
([93],[96])
([96],[93])
(96 ==== 93)
============= End Of Line
atau bisa juga tanpa memperdulikan angka-angka hanya dengan frequensi setiap bagi 2.
F(18) = F(9) + F(9) + 1
F(9) = F(4) + F(5) + 1
F(5) = F(2) + F(3) + 1
F(4) = F(2) + F(2) + 1
F(3) = F(1) + F(2) + 1
F(2) = F(1) + F(1) + 1
F(1) = 0;
F(1) = 0;
F(2) = F(1) + F(1) + 1 = 0 + 0 + 1 = 1
F(3) = F(1) + F(2) + 1 = 0 + 1 + 1 = 2
F(4) = F(2) + F(2) + 1 = 1 + 1 + 1 = 3
F(5) = F(2) + F(3) + 1 = 1 + 2 + 1 = 4
F(9) = F(4) + F(5) + 1 = 3 + 4 + 1 = 8
F(18) = F(9)+ F(9) + 1 = 8 + 8 + 1 = 17
Jawaban = B. 17
Masuk untuk menulis jawaban
Bismillah...
39.
mas no 38 gak ngerti tolong dijelasin dong pliss butuh bnget nih mau osk hari kamis ini...