Đáp án đúng: A
Đầu tiên, cần sắp xếp mảng A theo thứ tự tăng dần: A = {1, 2, 4, 5, 6, 7, 8, 9}.
Xét Test(3, 1, 8):
- i = 1, j = 8, m = trunc((1+8)/2) = 4
- x (3) != a[i] (1)
- (x (3) < a[m] (5)) and (i (1) < m (4)) là đúng. Gọi Test(3, 1, 3)
- i = 1, j = 3, m = trunc((1+3)/2) = 2
- x (3) != a[i] (1)
- (x (3) < a[m] (2)) and (i (1) < m (2)) là sai.
- (x (3) > a[m] (2)) and (j (3) > m (2)) là đúng. Gọi Test(3, 3, 3)
- i = 3, j = 3, m = trunc((3+3)/2) = 3
- x (3) != a[i] (4)
- (x (3) < a[m] (4)) and (i (3) < m (3)) là sai.
- (x (3) > a[m] (4)) and (j (3) > m (3)) là sai.
- vt := 0
Xét Test(4, 1, 8):
- i = 1, j = 8, m = trunc((1+8)/2) = 4
- x (4) != a[i] (1)
- (x (4) < a[m] (5)) and (i (1) < m (4)) là đúng. Gọi Test(4, 1, 3)
- i = 1, j = 3, m = trunc((1+3)/2) = 2
- x (4) != a[i] (1)
- (x (4) < a[m] (2)) and (i (1) < m (2)) là sai
- (x (4) > a[m] (2)) and (j (3) > m (2)) là đúng. Gọi Test(4, 3, 3)
- i = 3, j = 3, m = trunc((3+3)/2) = 3
- x (4) = a[i] (4) => vt := m = 3. Tuy nhiên, do đoạn code đầu vào index từ 1, nên kết quả vt = 3 sẽ tương ứng với vị trí index là 3. Trong mảng A đã sắp xếp, giá trị 4 nằm ở vị trí thứ 3, tức a[3]. Vì vậy phương án này sai.
Xét Test(6, 1, 8):
- i = 1, j = 8, m = trunc((1+8)/2) = 4
- x (6) != a[i] (1)
- (x (6) < a[m] (5)) and (i (1) < m (4)) là sai.
- (x (6) > a[m] (5)) and (j (8) > m (4)) là đúng. Gọi Test(6, 5, 8)
- i = 5, j = 8, m = trunc((5+8)/2) = 6
- x (6) = a[i] (6) => vt := m = 6. Trong mảng A đã sắp xếp, giá trị 6 nằm ở vị trí thứ 5, tức a[5]. Vì vậy phương án này sai.
Xét Test(7, 1, 8):
- i = 1, j = 8, m = trunc((1+8)/2) = 4
- x (7) != a[i] (1)
- (x (7) < a[m] (5)) and (i (1) < m (4)) là sai.
- (x (7) > a[m] (5)) and (j (8) > m (4)) là đúng. Gọi Test(7, 5, 8)
- i = 5, j = 8, m = trunc((5+8)/2) = 6
- x (7) != a[i] (6)
- (x (7) < a[m] (6)) and (i (5) < m (6)) là sai
- (x (7) > a[m] (6)) and (j (8) > m (6)) là đúng. Gọi Test(7, 7, 8)
- i = 7, j = 8, m = trunc((7+8)/2) = 7
- x (7) = a[i] (8) is false
- (x (7) < a[m] (8)) and (i (7) < m (7)) is false
- (x (7) > a[m] (8)) and (j (8) > m (7)) is false
- vt := 0. Vậy phương án này sai.
Do đó, không có kết quả đúng trong các phương án được đưa ra.