4

Câu 4

Cho đoạn chương trình sau viết bằng Python và ngôn ngữ C++ dùng để tìm kiếm một số nguyên X trong danh sách A (đã được sắp xếp tăng dần): Một bạn học sinh sau khi đọc đoạn code đã đưa ra các nhận định sau:

Phát biểu

Đúng

Sai

a

Trong vòng lặp while, biến m luôn bằng chỉ số của phần tử nằm giữa đoạn chỉ số từ L đến R trong danh sách A.

b

Hàm tim_kiem_nhi_phan sẽ trả về giá trị 0 nếu phần tử cần tìm không tồn tại trong danh sách A.

c

Nếu X không có trong danh sách A, thì sau mỗi lần lặp của vòng lặp while, số lượng phần tử còn lại trong đoạn chỉ số từ L đến R giảm ít nhất một nửa.

d

Với danh sách A gồm 1000 phần tử đã sắp xếp tăng dần và X không có trong danh sách, vòng lặp while có thể thực hiện hơn 15 lần trước khi dừng.

Giải thích câu 4

Giải thích chi tiết

😎 Cùng DOL xem qua cách giải câu này nhé!

✅ Đáp án: Đúng

🔎 Lí do:

  • Câu phát biểu này khá rõ ràng.

    • Ý cần kiểm tra là: trong mỗi lần lặp của vòng while, biến `m` có đúng là chỉ số nằm giữa đoạn từ `L` đến `R` hay không.

  • Đoạn chương trình cho biết:

    • Trong Python: `m = (L + R) // 2`

    • Trong C++: `int m = (L + R) / 2;` => Cả hai cách viết đều tính chỉ số giữa của đoạn đang xét từ L đến R.

  • L là chỉ số đầu đoạn, R là chỉ số cuối đoạn, nên giá trị m được tính từ trung điểm của hai chỉ số này. Đây chính là vị trí ở giữa đoạn chỉ số từ L đến R dùng trong thuật toán tìm kiếm nhị phân.

=> Vì vậy, phát biểu đúng.

1

2

3

4

5

6

Giải thích/đáp án

Đã làm: 0 / 30

Phần 1

0/24

Phần 2

0/6