Cho thuật toán tìm nhị phân không đệ quy sau:
int NRecBinarySearch (int M[], int N, int X)
{ int First = 0;
int Last = N – 1;
while (First <= Last)
{
int Mid = (First + Last)/2;
if (X == M[Mid])
return(Mid);
if (X < M[Mid])
Last = Mid – 1;
else
First = Mid + 1;
}
return(-1);
}
Chọn câu đúng nhất trong trường hợp tốt nhất khi phần tử ở giữa của mảng có giá trị bằng X:
Trả lời:
Đáp án đúng: A
Trong trường hợp tốt nhất, phần tử X cần tìm nằm ngay chính giữa mảng (M[Mid] == X) ngay ở lần so sánh đầu tiên trong vòng lặp while. Khi đó:
* **Số phép gán:**
* `First = 0;` (1 phép gán)
* `Last = N - 1;` (1 phép gán)
* `Mid = (First + Last) / 2;` (1 phép gán)
Vậy, Gmin = 3
* **Số phép so sánh:**
* `First <= Last` (1 phép so sánh để vào vòng lặp while)
* `X == M[Mid]` (1 phép so sánh trong vòng lặp while)
Vậy, Smin = 2
Do đó, phương án 1 là đáp án đúng.
Đề cương ôn thi với 220 câu trắc nghiệm Cấu trúc dữ liệu và giải thuật có đáp án được chọn lọc và chia sẻ dưới đây, nhằm giúp bạn sinh viên hệ thống kiến thức chuẩn bị cho kì thi sắp diễn ra.
50 câu hỏi 60 phút
Câu hỏi liên quan

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
