OSP 2011

Untuk soal 29 dan 30 perhatikan potongan program berikut:
var
lolo: array[0..10] of integer = (1,0,10,3,4,6,-1,14,-10,25,1);

procedure tukar(var a,b: integer);
var
    c: integer;
begin
    c:=a;
    a:=b;
    b:=c;
end;

procedure lele(lili,lala: integer);
var
    i,a,e : integer;
begin
    i := lili;
    a := lala;
    e := (i+a) div 2;
    while (i<a) do
    begin
        while lolo[i] <= lolo[e] do
            i:=i+1;
        while lolo[a] >= lolo[e] do
            a:=a-1;

        if (i<a) then
        begin
            tukar(lolo[i],lolo[a]);
        end;
        i:=i+1;
        a:=a-1; 
    end;
    if lili < a then lele(lili,e);
    if i < lala then lele(e,lala);
end;
  1. Jika dilakukan pemanggilan lele(0,7), maka di akhir program berapakah nilai lolo[0]+lolo[3]+lolo[7]+lolo[10]? Jawab: ……..

  2. Berapakah kompleksitas untuk pemanggilan lele (lili – lala), dengan nilai (lili-lala) = n? (tuliskan jawaban anda di lembar jawaban hanya huruf pilihan yang bersangkutan).
    1. O(1)
    2. O(log n)
    3. O(n)
    4. O(n log n)
    5. O(n2)
    6. O(n2 log n)
    7. O(n!)
    8. O(nn)

    Jika diperhatikan, nilai i akan terus bertambah sampai lolo[i] > lolo[e] sedangkan nilai a akan berkurang sampai nilai lolo[a] < lolo[e]. Nilai i awalnya lebih kecil dari e dan a lebih besar dari e. Artinya i akan mencari index dimana lolo[i] bernilai lebih besar dari lolo[e] di sebelah kiri, sedangkan a mencari index dimana lolo[a] lebih kecil dari lolo[e] di sebelah kanan. Setelah itu kedua nilai ditukar.

    Jika diteruskan, maka program sama saja dengan mengurutkan array dari index lili sampai lala.

  1. Jika dilakukan pemanggilan lele(0,7), artinya array akan terurut dari 0 sampai 7 menjadi
    -1 0 1 3 4 6 10 14 -10 25 1
    Jadi, lolo[0]+lolo[3]+lolo[7]+lolo[10] = -1 + 3 + 14 + 1 = 17.

  2. Pengurutan yang dilakukan pada program menggunakan metode Quick Sort yang memiliki kompleksitas O(n log n) (D).

Share Now:

5 1 vote
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
kim
kim
2 years ago

⅓ x ⅔ = 2/9 bagian
kok bisa gitu kak?

Langganan

Subscribe To Our Newsletter

2
0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!