Đáp án và lời giải
15 câu Trắc nghiệm Tin học 11 Cánh diều Định hướng KHMT Bài 5: Đánh giá thuật toán có đáp án
Câu 1
Lời giải do TopStudy biên soạn
Đáp án: A
Đáp án: A
Giải thích: Độ phức tạp thời gian chủ yếu phụ thuộc vào kích thước dữ liệu đầu vào (n). Các yếu tố khác như ngôn ngữ lập trình hay kỹ năng lập trình viên có thể ảnh hưởng đến hiệu suất thực tế nhưng không phải là yếu tố chính để xác định độ phức tạp.
Câu 2
Lời giải do TopStudy biên soạn
Đáp án: C
Đáp án: C
Giải thích: Độ phức tạp thời gian tuyến tính được ký hiệu là O(n), có nghĩa là số phép toán cần thực hiện tỷ lệ thuận với kích thước đầu vào n.
Câu 3
Lời giải do TopStudy biên soạn
Đáp án: A
Đáp án: A
Giải thích: Phép cộng hai số là phép toán sơ cấp vì nó thực hiện trong thời gian không phụ thuộc vào kích thước n của dữ liệu đầu vào. Các phép lặp và lựa chọn không được coi là sơ cấp.
Câu 4
Lời giải do TopStudy biên soạn
Đáp án: B
Đáp án: B
Giải thích: Tính tổng dãy số từ 1 đến n bằng công thức S = n(n + 1)/2 có độ phức tạp thời gian hằng số (O(1)) vì số phép toán không phụ thuộc vào n.
Câu 5
Lời giải do TopStudy biên soạn
Đáp án: B
Đáp án: B
Giải thích: Khi ước lượng, chúng ta bỏ qua các hằng số nhân và chỉ giữ lại các phần có bậc lớn nhất để đơn giản hóa biểu thức.
Câu 6
Lời giải do TopStudy biên soạn
Đáp án: C
Đáp án: C
Giải thích: Tìm kiếm một phần tử trong danh sách có thể có độ phức tạp thời gian tuyến tính (O(n)) trong trường hợp xấu nhất khi phải kiểm tra từng phần tử một.
Câu 7
Lời giải do TopStudy biên soạn
Đáp án: B
Đáp án: B
Giải thích: Phép lặp không được coi là phép toán sơ cấp vì nó liên quan đến việc thực hiện nhiều phép toán qua từng lần lặp, do đó không thể xác định thời gian thực hiện như một hằng số.
Câu 8
Lời giải do TopStudy biên soạn
Đáp án: D
Đáp án: D
Giải thích: Ước lượng làm giả thêm là cách ước lượng mà đảm bảo trong thực tế sẽ không có trường hợp nào vượt quá ước lượng đã đưa ra.
Câu 9
Lời giải do TopStudy biên soạn
Đáp án: B
Đáp án: B
Giải thích: Độ phức tạp thời gian O(n^2) xảy ra khi có hai vòng lặp lồng nhau, mỗi vòng lặp chạy qua n phần tử.
Câu 10
Lời giải do TopStudy biên soạn
Đáp án: D
Đáp án: D
Giải thích: Độ phức tạp thời gian hằng số không thay đổi khi kích thước n tăng lên, do đó không có số phép toán nào tăng theo kích thước n.
Câu 11
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
a) Sai. Phương pháp cộng dồn từng số có độ phức tạp thời gian tuyến tính O(n) vì phải thực hiện n phép cộng.
b) Đúng. Công thức tính tổng cấp số cộng chỉ yêu cầu thực hiện 3 phép toán, không phụ thuộc vào kích thước đầu vào n, nên có độ phức tạp thời gian hằng số O(1)
c) Sai. Thuật toán tìm kiếm nhị phân có độ phức tạp thời gian là O(logn), không phải hằng số.
d) Sai. Thuật toán sắp xếp nổi bọt có độ phức tạp thời gian là O(n2) trong trường hợp xấu nhất.
Câu 12
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
a) Đúng – Độ phức tạp thời gian là O(n) vì phải duyệt qua từng phần tử để so sánh.
b) Sai – Độ phức tạp thời gian là O(n) nhưng không được coi là tuyến tính trong trường hợp này do bản chất của đệ quy liên quan đến nhiều lời gọi hàm chồng chéo.
c) Sai. Thuật toán Quick Sort có độ phức tạp thời gian trung bình là O(nlogn)
d) Đúng. Tìm kiếm một số trong dãy số không sắp xếp bằng cách lặp qua từng phần tử có độ phức tạp thời gian O(n), vì phải kiểm tra tất cả n phần tử.
Câu 13
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Đáp án: Để so sánh hiệu quả của các thuật toán khác nhau.
Giải thích: Độ phức tạp thời gian giúp lập trình viên xác định được thời gian thực hiện và tài nguyên mà thuật toán cần, từ đó lựa chọn thuật toán phù hợp nhất cho bài toán cụ thể. Điều này đặc biệt quan trọng khi xử lý lượng dữ liệu lớn hoặc khi thời gian thực hiện là yếu tố quyết định trong ứng dụng.
Câu 14
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Đáp án: Độ phức tạp thời gian hằng số là khi số phép toán cần thực hiện không phụ thuộc vào kích thước dữ liệu đầu vào.
Giải thích: Thuật toán có độ phức tạp thời gian hằng số thực hiện một số lượng phép toán cố định, không tăng theo kích thước n. Ví dụ, nếu một thuật toán chỉ cần thực hiện ba phép toán để cho ra kết quả, thì nó có độ phức tạp thời gian hằng số T(n) = 3, tức là O(1).
Câu 15
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Đáp án: Độ phức tạp thời gian tuyến tính có nghĩa là số phép toán thực hiện tỷ lệ thuận với kích thước đầu vào.
Giải thích: Khi một thuật toán có độ phức tạp thời gian tuyến tính, điều này cho thấy rằng thời gian thực hiện sẽ tăng lên theo từng đơn vị kích thước dữ liệu. Ví dụ, nếu một thuật toán phải kiểm tra từng phần tử trong danh sách để tìm một giá trị cụ thể, thì số phép toán sẽ tương ứng với số lượng phần tử trong danh sách. Nếu danh sách có n phần tử, thì số phép toán sẽ là n, ký hiệu là T(n) = n, tức là O(n).