Deskripsi Untuk Soal Nomor 41 dan 42
Perhatikan potongan program berikut:
var
a,b,c,i,j,idx : longint;
ar : array [1..10] of char = ('c','d','x','s','t','t','a','b','j','r');
br,cr : array [1..30] of longint;
begin
a := 1;
b := 7;
c := 10;
for i := a to b do begin
idx := ord(ar[i]) - ord('a') + 1;
br[idx] := br[idx] + 1;
end;
for i := b+1 to c do begin
idx := ord(ar[i]) - ord('a') + 1;
cr[idx] := cr[idx] + 1;
end;
for i := 1 to 26 do
for j := 1 to br[i] do
write(chr(i+96));
for i := 1 to 26 do
for j := 1 to cr[i] do
write(chr(i+96));
writeln();
end.
Catatan:
ord(x) : fungsi mengembalikan nilai ASCII karakter x. ASCII ‘a’, ‘b’, ‘c’, …, ‘z’ berturut-turut adalah 97 – 122.
Apakah output dari program diatas?
Berapakah nilai a, b, dan c masing-masing agar output yang dihasilkan adalah "xastt"?
41. Pseudocode diatas mengurutkan subarray ar dari a sampai b dan dari b+1 sampai c secara terpisah.
ar = cdxsttabjr
karena a = 1; b=7; c=10; maka dapat kita pisah seperti berikut: cdxstta | bjr
lalu kita urutkan: acdsttx | bjr
maka outputnya adalah: acdsttxbjr
Algoritma ini disebut Count Sort. (namun sebagian)
42. Merujuk pada nomor 41, maka untuk mendapatkan xastt subarray ar yang dipisah harus seperti berikut: x | astt
maka a = 3 dan b = 3 dan c = 7.
Masuk untuk menulis jawaban