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;
-
Jika dilakukan pemanggilan
lele(0,7)
, maka di akhir program berapakah nilailolo[0]+lolo[3]+lolo[7]+lolo[10]
? Jawab: …….. -
Berapakah kompleksitas untuk pemanggilan
lele (lili – lala)
, dengan nilai(lili-lala) = n
? (tuliskan jawaban anda di lembar jawaban hanya huruf pilihan yang bersangkutan).- O(1)
- O(log n)
- O(n)
- O(n log n)
- O(n2)
- O(n2 log n)
- O(n!)
- O(nn)
-
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. -
Pengurutan yang dilakukan pada program menggunakan metode Quick Sort yang memiliki kompleksitas O(n log n) (D).
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.
⅓ x ⅔ = 2/9 bagian
kok bisa gitu kak?
Kan ibunya dapat 1/3, jadi sisa 2/3 untuk anak-anaknya. Karena anaknya ada 3, jadi 2/3 itu dibagi 3 lagi buat masing-masing anak, sehingga bagian yang didapat anak-anaknya itu 1/3 dari 2/3 = 2/9.