12+ Đề Trắc Nghiệm Tin Học 11 (Kết Nối Tri Thức) Bài 24: Đánh Giá Độ Phức Tạp Thời Gian Thuật Toán

Đề 01

Đề 02

Đề 03

Đề 04

Đề 05

Đề 06

Đề 07

Đề 08

Đề 09

Đề 10

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 01

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 01 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu O lớn (Big O) biểu thị điều gì?

  • A. Thời gian chạy chính xác của thuật toán.
  • B. Thời gian chạy tốt nhất (trường hợp lý tưởng) của thuật toán.
  • C. Cận trên (trường hợp xấu nhất) của tốc độ tăng trưởng thời gian chạy khi kích thước đầu vào lớn.
  • D. Lượng bộ nhớ mà thuật toán sử dụng.

Câu 2: Giả sử một chương trình thực hiện các bước sau theo trình tự: một khối lệnh tốn O(n^2) thời gian, sau đó là một khối lệnh tốn O(n) thời gian, và cuối cùng là một khối lệnh tốn O(1) thời gian. Sử dụng quy tắc cộng, độ phức tạp thời gian tổng thể của chương trình này là gì?

  • A. O(n^3)
  • B. O(n^2 + n + 1)
  • C. O(n)
  • D. O(n^2)

Câu 3: Một thuật toán tìm kiếm nhị phân trên một mảng đã sắp xếp có độ phức tạp thời gian là O(log n). Điều này có ý nghĩa gì khi kích thước mảng (n) tăng lên?

  • A. Thời gian chạy tăng rất chậm khi n tăng, hiệu quả với dữ liệu lớn.
  • B. Thời gian chạy tăng tuyến tính với n.
  • C. Thời gian chạy tăng theo bình phương của n.
  • D. Thời gian chạy không phụ thuộc vào n.

Câu 4: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
for j = 1 to n:
// Thực hiện một phép toán cơ bản (O(1))
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(n log n)

Câu 5: Tại sao các hằng số và các số hạng bậc thấp thường bị bỏ qua khi đánh giá độ phức tạp thời gian bằng ký hiệu Big O?

  • A. Chúng làm cho việc tính toán trở nên quá phức tạp.
  • B. Khi kích thước đầu vào (n) rất lớn, tốc độ tăng trưởng của số hạng bậc cao nhất là yếu tố chi phối.
  • C. Chúng chỉ quan trọng trong trường hợp tốt nhất.
  • D. Việc bỏ qua chúng giúp thuật toán chạy nhanh hơn.

Câu 6: Thuật toán nào sau đây (nếu được triển khai một cách điển hình) có độ phức tạp thời gian O(n) trong trường hợp xấu nhất?

  • A. Tìm kiếm tuyến tính (Linear Search)
  • B. Tìm kiếm nhị phân (Binary Search)
  • C. Sắp xếp chọn (Selection Sort)
  • D. Sắp xếp nổi bọt (Bubble Sort)

Câu 7: Một thuật toán được mô tả có thời gian chạy là T(n) = 5n^2 + 2n + 10. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n^3)
  • D. O(1)

Câu 8: Xem xét đoạn mã giả sau:
```
a = 10
b = 20
if a > b:
print(a)
else:
print(b)
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 9: Khi so sánh hiệu suất của hai thuật toán có độ phức tạp O(n log n) và O(n^2) với cùng một kích thước đầu vào n rất lớn, thuật toán nào thường được ưu tiên hơn?

  • A. Thuật toán O(n log n) vì nó tăng trưởng chậm hơn O(n^2).
  • B. Thuật toán O(n^2) vì nó có số mũ cao hơn.
  • C. Cả hai đều có hiệu suất tương đương khi n lớn.
  • D. Không thể so sánh nếu không biết các hằng số cụ thể.

Câu 10: Quy tắc nhân trong tính độ phức tạp thời gian của thuật toán được áp dụng trong trường hợp nào?

  • A. Khi hai khối lệnh được thực hiện nối tiếp.
  • B. Khi chọn một trong hai nhánh của câu lệnh điều kiện (if-else).
  • C. Khi một cấu trúc lặp (hoặc thuật toán) nằm bên trong một cấu trúc lặp khác.
  • D. Khi tính tổng thời gian của tất cả các phép toán đơn lẻ.

Câu 11: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
// Thực hiện một phép toán cơ bản (O(1))
for j = 1 to n*n:
// Thực hiện một phép toán cơ bản (O(1))
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^3)
  • D. O(n^2)

Câu 12: Độ phức tạp O(1) nghĩa là gì?

  • A. Thời gian chạy là một hằng số, không phụ thuộc vào kích thước đầu vào n.
  • B. Thời gian chạy tăng tuyến tính với n.
  • C. Thời gian chạy tăng theo logarit của n.
  • D. Thời gian chạy là rất nhanh.

Câu 13: Thuật toán sắp xếp nào sau đây thường có độ phức tạp thời gian O(n log n) trong trường hợp trung bình và xấu nhất?

  • A. Sắp xếp nổi bọt (Bubble Sort)
  • B. Sắp xếp chèn (Insertion Sort)
  • C. Sắp xếp trộn (Merge Sort)
  • D. Sắp xếp chọn (Selection Sort)

Câu 14: Tại sao việc đánh giá độ phức tạp thời gian lại quan trọng trong việc phát triển phần mềm, đặc biệt là khi xử lý dữ liệu lớn?

  • A. Chỉ để biết thuật toán nào viết ngắn gọn hơn.
  • B. Để dự đoán và lựa chọn thuật toán hiệu quả nhất khi xử lý dữ liệu có kích thước lớn.
  • C. Để xác định số lượng dòng mã trong chương trình.
  • D. Để kiểm tra chương trình có lỗi cú pháp hay không.

Câu 15: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
for j = 1 to 10:
// Thực hiện một phép toán cơ bản (O(1))
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(10n)
  • C. O(n^2)
  • D. O(1)

Câu 16: Hàm nào sau đây tăng trưởng nhanh nhất khi n tiến tới vô cùng?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(2^n)

Câu 17: Giả sử bạn có hai thuật toán để giải cùng một bài toán. Thuật toán A có độ phức tạp O(n log n), thuật toán B có độ phức tạp O(n^1.5). Với n đủ lớn, thuật toán nào có khả năng chạy nhanh hơn?

  • A. Thuật toán A (O(n log n))
  • B. Thuật toán B (O(n^1.5))
  • C. Cả hai có hiệu suất tương đương.
  • D. Không thể xác định mà không biết các hằng số cụ thể.

Câu 18: Khi phân tích độ phức tạp thời gian của một thuật toán chứa câu lệnh điều kiện (if-else), ta thường xét trường hợp nào để đánh giá bằng Big O?

  • A. Trường hợp tốt nhất (nhánh có thời gian chạy ít nhất).
  • B. Thời gian chạy trung bình của cả hai nhánh.
  • C. Trường hợp xấu nhất (nhánh có thời gian chạy lớn nhất).
  • D. Tổng thời gian chạy của cả hai nhánh.

Câu 19: Xem xét đoạn mã giả sau:
```
i = 1
while i < n: // Thực hiện một phép toán cơ bản (O(1)) i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 20: Độ phức tạp thời gian của việc truy cập một phần tử theo chỉ số trong một mảng (ví dụ: `arr[i]`) là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 21: Mục đích chính của việc đánh giá độ phức tạp thời gian của thuật toán là gì?

  • A. Để so sánh hiệu quả của các thuật toán một cách độc lập với phần cứng cụ thể và kích thước dữ liệu.
  • B. Để tìm ra lỗi logic trong thuật toán.
  • C. Để xác định ngôn ngữ lập trình nào là tốt nhất.
  • D. Để đo thời gian chạy thực tế trên một máy tính cụ thể.

Câu 22: Cho hai thuật toán, một có độ phức tạp O(n) và một có độ phức tạp O(n log n). Khi n rất nhỏ (ví dụ n = 10), thuật toán nào có thể nhanh hơn?

  • A. Thuật toán O(n log n).
  • B. Thuật toán O(n).
  • C. Cả hai đều chậm như nhau.
  • D. Không thể chắc chắn chỉ dựa vào Big O; hằng số có thể chi phối với n nhỏ.

Câu 23: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
// O(1) operation
for j = 1 to n:
for k = 1 to n:
// O(1) operation
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n^3)
  • D. O(n log n)

Câu 24: Độ phức tạp thời gian của việc thêm một phần tử vào cuối danh sách liên kết (linked list) đơn là bao nhiêu (giả sử bạn đã có con trỏ tới nút cuối cùng)?

  • A. O(1)
  • B. O(n)
  • C. O(log n)
  • D. O(n^2)

Câu 25: Thuật toán nào sau đây có độ phức tạp thời gian O(n log n)?

  • A. Tìm kiếm tuyến tính.
  • B. Tìm kiếm nhị phân.
  • C. Sắp xếp nhanh (Quick Sort) trong trường hợp trung bình.
  • D. Sắp xếp chọn.

Câu 26: Độ phức tạp thời gian O(n!) (n giai thừa) thuộc loại nào trong các loại độ phức tạp cơ bản?

  • A. Logarit.
  • B. Đa thức.
  • C. Mũ (Exponential).
  • D. Giai thừa (Factorial).

Câu 27: Khi phân tích độ phức tạp của một thuật toán đệ quy, phương pháp nào thường được sử dụng?

  • A. Sử dụng các phương pháp như Phương pháp Thầy (Master Theorem) hoặc cây đệ quy.
  • B. Chỉ cần đếm số lần hàm được gọi.
  • C. Luôn luôn là O(n).
  • D. Không thể phân tích độ phức tạp của thuật toán đệ quy.

Câu 28: Cho một thuật toán có thời gian chạy T(n) = 2n + log n + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(1)

Câu 29: Tại sao trong phân tích độ phức tạp Big O, chúng ta quan tâm đến hành vi khi n tiến tới vô cùng (asymptotic behavior)?

  • A. Vì nó giúp tính toán thời gian chạy chính xác cho bất kỳ n nào.
  • B. Vì nó chỉ quan trọng khi n là số nguyên tố.
  • C. Vì nó cho thấy cách hiệu suất thay đổi đối với các tập dữ liệu rất lớn, nơi sự khác biệt giữa các thuật toán trở nên rõ rệt.
  • D. Vì các thuật toán chỉ được sử dụng với dữ liệu vô hạn.

Câu 30: Khi so sánh các độ phức tạp thời gian O(1), O(log n), O(n), O(n log n), O(n^2), sắp xếp theo thứ tự từ nhanh nhất đến chậm nhất (với n đủ lớn) là gì?

  • A. O(n^2), O(n log n), O(n), O(log n), O(1)
  • B. O(1), O(log n), O(n), O(n log n), O(n^2)
  • C. O(log n), O(1), O(n), O(n^2), O(n log n)
  • D. O(1), O(n), O(log n), O(n log n), O(n^2)

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu O lớn (Big O) biểu thị điều gì?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 2: Giả sử một chương trình thực hiện các bước sau theo trình tự: một khối lệnh tốn O(n^2) thời gian, sau đó là một khối lệnh tốn O(n) thời gian, và cuối cùng là một khối lệnh tốn O(1) thời gian. Sử dụng quy tắc cộng, độ phức tạp thời gian tổng thể của chương trình này là gì?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 3: Một thuật toán tìm kiếm nhị phân trên một mảng đã sắp xếp có độ phức tạp thời gian là O(log n). Điều này có ý nghĩa gì khi kích thước mảng (n) tăng lên?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 4: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
for j = 1 to n:
// Thực hiện một phép toán cơ bản (O(1))
```
Độ phức tạp thời gian của đoạn mã này là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 5: Tại sao các hằng số và các số hạng bậc thấp thường bị bỏ qua khi đánh giá độ phức tạp thời gian bằng ký hiệu Big O?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 6: Thuật toán nào sau đây (nếu được triển khai một cách điển hình) có độ phức tạp thời gian O(n) trong trường hợp xấu nhất?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 7: Một thuật toán được mô tả có thời gian chạy là T(n) = 5n^2 + 2n + 10. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 8: Xem xét đoạn mã giả sau:
```
a = 10
b = 20
if a > b:
print(a)
else:
print(b)
```
Độ phức tạp thời gian của đoạn mã này là gì?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 9: Khi so sánh hiệu suất của hai thuật toán có độ phức tạp O(n log n) và O(n^2) với cùng một kích thước đầu vào n rất lớn, thuật toán nào thường được ưu tiên hơn?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 10: Quy tắc nhân trong tính độ phức tạp thời gian của thuật toán được áp dụng trong trường hợp nào?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 11: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
// Thực hiện một phép toán cơ bản (O(1))
for j = 1 to n*n:
// Thực hiện một phép toán cơ bản (O(1))
```
Độ phức tạp thời gian của đoạn mã này là gì?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 12: Độ phức tạp O(1) nghĩa là gì?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 13: Thuật toán sắp xếp nào sau đây thường có độ phức tạp thời gian O(n log n) trong trường hợp trung bình và xấu nhất?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 14: Tại sao việc đánh giá độ phức tạp thời gian lại quan trọng trong việc phát triển phần mềm, đặc biệt là khi xử lý dữ liệu lớn?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 15: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
for j = 1 to 10:
// Thực hiện một phép toán cơ bản (O(1))
```
Độ phức tạp thời gian của đoạn mã này là gì?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 16: Hàm nào sau đây tăng trưởng nhanh nhất khi n tiến tới vô cùng?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 17: Giả sử bạn có hai thuật toán để giải cùng một bài toán. Thuật toán A có độ phức tạp O(n log n), thuật toán B có độ phức tạp O(n^1.5). Với n đủ lớn, thuật toán nào có khả năng chạy nhanh hơn?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 18: Khi phân tích độ phức tạp thời gian của một thuật toán chứa câu lệnh điều kiện (if-else), ta thường xét trường hợp nào để đánh giá bằng Big O?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 19: Xem xét đoạn mã giả sau:
```
i = 1
while i < n: // Thực hiện một phép toán cơ bản (O(1)) i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này là gì?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 20: Độ phức tạp thời gian của việc truy cập một phần tử theo chỉ số trong một mảng (ví dụ: `arr[i]`) là bao nhiêu?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 21: Mục đích chính của việc đánh giá độ phức tạp thời gian của thuật toán là gì?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 22: Cho hai thuật toán, một có độ phức tạp O(n) và một có độ phức tạp O(n log n). Khi n rất nhỏ (ví dụ n = 10), thuật toán nào có thể nhanh hơn?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 23: Xem xét đoạn mã giả sau:
```
for i = 1 to n:
// O(1) operation
for j = 1 to n:
for k = 1 to n:
// O(1) operation
```
Độ phức tạp thời gian của đoạn mã này là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 24: Độ phức tạp thời gian của việc thêm một phần tử vào cuối danh sách liên kết (linked list) đơn là bao nhiêu (giả sử bạn đã có con trỏ tới nút cuối cùng)?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 25: Thuật toán nào sau đây có độ phức tạp thời gian O(n log n)?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 26: Độ phức tạp thời gian O(n!) (n giai thừa) thuộc loại nào trong các loại độ phức tạp cơ bản?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 27: Khi phân tích độ phức tạp của một thuật toán đệ quy, phương pháp nào thường được sử dụng?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 28: Cho một thuật toán có thời gian chạy T(n) = 2n + log n + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 29: Tại sao trong phân tích độ phức tạp Big O, chúng ta quan tâm đến hành vi khi n tiến tới vô cùng (asymptotic behavior)?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 30: Khi so sánh các độ phức tạp thời gian O(1), O(log n), O(n), O(n log n), O(n^2), sắp xếp theo thứ tự từ nhanh nhất đến chậm nhất (với n đủ lớn) là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 02

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 02 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, tại sao chúng ta thường chỉ quan tâm đến số lượng các phép toán cơ bản (như gán, so sánh, cộng, trừ) thay vì thời gian thực thi chính xác trên một máy tính cụ thể?

  • A. Thời gian thực thi chính xác quá khó để đo lường.
  • B. Các phép toán cơ bản luôn mất cùng một lượng thời gian trên mọi máy tính.
  • C. Chỉ có các phép toán cơ bản mới ảnh hưởng đến hiệu suất thuật toán.
  • D. Số lượng phép toán cơ bản cung cấp ước lượng hiệu suất độc lập với phần cứng và môi trường thực thi.

Câu 2: Độ phức tạp thời gian O(n) mô tả mối quan hệ giữa thời gian thực thi và kích thước đầu vào n như thế nào?

  • A. Thời gian thực thi không đổi khi n tăng.
  • B. Thời gian thực thi tăng tỷ lệ thuận (tuyến tính) với n.
  • C. Thời gian thực thi tăng theo hàm bình phương của n.
  • D. Thời gian thực thi tăng theo hàm logarit của n.

Câu 3: Cho đoạn mã giả sau:

```
function process(arr, n):
sum = 0
for i from 0 to n-1:
sum = sum + arr[i]
return sum
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu, với n là kích thước của mảng `arr`?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 4: Cho đoạn mã giả sau:

```
function find_max(arr, n):
max_val = arr[0]
for i from 1 to n-1:
if arr[i] > max_val:
max_val = arr[i]
return max_val
```

Độ phức tạp thời gian của đoạn mã này trong trường hợp xấu nhất (worst-case) là bao nhiêu, với n là kích thước của mảng `arr`?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n log n)

Câu 5: Thuật toán tìm kiếm nhị phân trên một mảng đã được sắp xếp có độ phức tạp thời gian là O(log n). Điều này có nghĩa là gì?

  • A. Thời gian tìm kiếm tăng gấp đôi khi kích thước mảng tăng gấp đôi.
  • B. Thời gian tìm kiếm giảm đi một nửa khi kích thước mảng tăng gấp đôi.
  • C. Thời gian tìm kiếm tăng theo bình phương của kích thước mảng.
  • D. Thời gian tìm kiếm tăng rất chậm khi kích thước mảng tăng lên đáng kể.

Câu 6: Cho đoạn mã giả sau:

```
function print_pairs(arr, n):
for i from 0 to n-1:
for j from 0 to n-1:
print(arr[i], arr[j])
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu, với n là kích thước của mảng `arr`?

  • A. O(n)
  • B. O(n log n)
  • C. O(log n)
  • D. O(n^2)

Câu 7: Khi so sánh hai thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2) để giải cùng một bài toán với kích thước đầu vào n rất lớn, thuật toán nào thường được ưu tiên hơn và vì sao?

  • A. Thuật toán A (O(n)) vì thời gian thực thi tăng chậm hơn nhiều so với O(n^2) khi n lớn.
  • B. Thuật toán B (O(n^2)) vì nó có thể xử lý dữ liệu lớn hơn.
  • C. Cả hai thuật toán đều có hiệu quả như nhau với n lớn.
  • D. Không thể xác định chỉ dựa vào độ phức tạp Big O.

Câu 8: Quy tắc cộng trong phân tích độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi các khối lệnh hoặc hàm được thực thi nối tiếp nhau.
  • B. Khi có các vòng lặp lồng nhau.
  • C. Khi các khối lệnh hoặc hàm được thực thi song song.
  • D. Khi kích thước đầu vào được chia nhỏ.

Câu 9: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi các khối lệnh được thực thi nối tiếp nhau.
  • B. Khi một khối lệnh (hoặc vòng lặp) được thực hiện bên trong một cấu trúc lặp khác.
  • C. Khi thuật toán sử dụng phép nhân số học.
  • D. Khi kết hợp độ phức tạp của hai thuật toán khác nhau.

Câu 10: Cho đoạn mã giả sau:

```
function example(n):
for i from 1 to 100:
print(i)
for j from 1 to n:
print(j)
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(1)
  • B. O(100)
  • C. O(n)
  • D. O(100n)

Câu 11: Thuật toán nào sau đây thường có độ phức tạp thời gian tốt nhất (hiệu quả nhất) khi kích thước đầu vào n rất lớn?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n log n)

Câu 12: Độ phức tạp thời gian O(n^2) thường xuất hiện trong các thuật toán có cấu trúc như thế nào?

  • A. Chỉ có các phép toán cơ bản.
  • B. Một vòng lặp đơn chạy n lần.
  • C. Hai vòng lặp lồng nhau, mỗi vòng lặp chạy khoảng n lần.
  • D. Sử dụng đệ quy chia đôi.

Câu 13: Tại sao các hằng số và các thành phần bậc thấp thường bị bỏ qua trong ký hiệu Big O?

  • A. Chúng không ảnh hưởng đến thời gian thực thi.
  • B. Khi n rất lớn, thành phần bậc cao nhất chi phối sự tăng trưởng của hàm thời gian.
  • C. Việc tính toán chúng rất phức tạp.
  • D. Chúng chỉ quan trọng trong trường hợp tốt nhất.

Câu 14: Cho đoạn mã giả sau:

```
function example(arr, n):
if n <= 1: return // Chia mảng làm đôi mid = n / 2 left_half = arr[0...mid-1] right_half = arr[mid...n-1] // Gọi đệ quy trên hai nửa example(left_half, mid) example(right_half, n - mid) // Các thao tác kết hợp (ví dụ: trộn mảng đã sắp xếp) // ... (thực hiện trong thời gian O(n)) ``` Đây là cấu trúc của một thuật toán "chia để trị" điển hình (ví dụ: Merge Sort). Độ phức tạp thời gian của các thuật toán dạng này thường là bao nhiêu?

  • A. O(n^2)
  • B. O(n)
  • C. O(log n)
  • D. O(n log n)

Câu 15: Tại sao việc đánh giá độ phức tạp thời gian (và không gian) của thuật toán lại quan trọng trong việc phát triển phần mềm?

  • A. Giúp dự đoán hiệu suất của chương trình với các bộ dữ liệu đầu vào lớn và so sánh hiệu quả giữa các thuật toán khác nhau.
  • B. Chỉ cần thiết khi lập trình trên các hệ thống nhúng với bộ nhớ hạn chế.
  • C. Là yêu cầu bắt buộc của mọi ngôn ngữ lập trình hiện đại.
  • D. Chỉ giúp tìm ra lỗi logic trong mã nguồn.

Câu 16: Cho đoạn mã giả:

```
function example(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 17: Thuật toán nào dưới đây, khi triển khai một cách cơ bản, thường có độ phức tạp thời gian là O(n^2)?

  • A. Sắp xếp chọn (Selection Sort)
  • B. Tìm kiếm nhị phân (Binary Search)
  • C. Sắp xếp trộn (Merge Sort)
  • D. Sắp xếp nhanh (Quick Sort) - trung bình

Câu 18: Giả sử một thuật toán có độ phức tạp thời gian là T(n) = 5n^2 + 3n + 10. Khi sử dụng ký hiệu Big O để biểu diễn độ phức tạp, kết quả đúng là gì?

  • A. O(n)
  • B. O(5n^2)
  • C. O(n^2 + n)
  • D. O(n^2)

Câu 19: Trường hợp tốt nhất (best-case) của một thuật toán là gì?

  • A. Bộ dữ liệu đầu vào làm cho thuật toán thực thi với thời gian ngắn nhất.
  • B. Bộ dữ liệu đầu vào làm cho thuật toán thực thi với thời gian dài nhất.
  • C. Bộ dữ liệu đầu vào trung bình.
  • D. Trường hợp thuật toán không có lỗi.

Câu 20: Trường hợp xấu nhất (worst-case) của một thuật toán là gì?

  • A. Bộ dữ liệu đầu vào làm cho thuật toán thực thi với thời gian ngắn nhất.
  • B. Bộ dữ liệu đầu vào làm cho thuật toán thực thi với thời gian dài nhất.
  • C. Bộ dữ liệu đầu vào trung bình.
  • D. Trường hợp thuật toán hoạt động chính xác.

Câu 21: Cho đoạn mã giả:

```
function example(n):
sum = 0
for i from 1 to n:
sum = sum + i
j = 1
while j < n: print(j) j = j * 3 ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(log n)
  • B. O(n log n)
  • C. O(n)
  • D. O(n + log n)

Câu 22: Thuật toán tìm kiếm tuyến tính (Linear Search) trên một mảng có n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 23: Độ phức tạp thời gian O(1) có nghĩa là gì?

  • A. Thời gian thực thi không thay đổi khi kích thước đầu vào n thay đổi.
  • B. Thời gian thực thi tăng tuyến tính với n.
  • C. Thời gian thực thi là 1 đơn vị.
  • D. Thuật toán rất nhanh.

Câu 24: Cho đoạn mã giả:

```
function example(n):
for i from 1 to n:
for j from 1 to i:
print(i, j)
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(n log n)
  • C. O(log n)
  • D. O(n^2)

Câu 25: Khi phân tích độ phức tạp thời gian của thuật toán, "kích thước đầu vào" (input size) n thường được định nghĩa là gì?

  • A. Số dòng mã lệnh của chương trình.
  • B. Một tham số đo lường quy mô của dữ liệu mà thuật toán xử lý (ví dụ: số phần tử, số bit).
  • C. Thời gian chạy thực tế của chương trình.
  • D. Số lượng biến được sử dụng trong thuật toán.

Câu 26: Giả sử bạn có hai thuật toán để giải quyết một bài toán: Thuật toán X có độ phức tạp O(n log n) và Thuật toán Y có độ phức tạp O(n^2). Với n = 1000, thuật toán nào có khả năng chạy nhanh hơn và tại sao?

  • A. Thuật toán X (O(n log n)) vì n log n tăng chậm hơn nhiều so với n^2 khi n lớn.
  • B. Thuật toán Y (O(n^2)) vì n^2 lớn hơn n log n.
  • C. Cả hai thuật toán sẽ chạy với tốc độ tương đương nhau.
  • D. Không thể xác định nếu không biết hằng số ẩn trong ký hiệu Big O.

Câu 27: Thuật toán sắp xếp nào dưới đây, khi triển khai hiệu quả, có độ phức tạp thời gian trung bình là O(n log n)?

  • A. Sắp xếp chèn (Insertion Sort)
  • B. Sắp xếp trộn (Merge Sort)
  • C. Sắp xếp nổi bọt (Bubble Sort)
  • D. Sắp xếp chọn (Selection Sort)

Câu 28: Nếu một thuật toán có độ phức tạp thời gian là O(2^n), điều gì sẽ xảy ra với thời gian thực thi khi kích thước đầu vào n tăng lên một lượng nhỏ (ví dụ: tăng thêm 1 hoặc 2)?

  • A. Thời gian thực thi tăng tuyến tính.
  • B. Thời gian thực thi tăng logarit.
  • C. Thời gian thực thi tăng theo bình phương.
  • D. Thời gian thực thi tăng theo cấp số nhân (rất nhanh).

Câu 29: Cho đoạn mã giả:

```
function example(arr, n):
if n <= 0: return 0 if n == 1: return arr[0] // Giả sử hàm sum_array_recursive(arr, n) tính tổng n phần tử // bằng cách gọi đệ quy trên n-1 phần tử và cộng thêm phần tử cuối. // Độ phức tạp của hàm này là O(n). return sum_array_recursive(arr, n) ``` Độ phức tạp thời gian của hàm `example` gọi `sum_array_recursive` như mô tả là bao nhiêu?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 30: Khi so sánh hiệu quả của hai thuật toán A (O(n log n)) và B (O(n^2)) cho một bài toán, có trường hợp nào mà thuật toán B có thể chạy nhanh hơn thuật toán A không?

  • A. Không bao giờ, vì O(n log n) luôn tốt hơn O(n^2).
  • B. Có thể, khi kích thước đầu vào n rất nhỏ, hằng số ẩn trong ký hiệu Big O có thể làm thay đổi kết quả so sánh.
  • C. Có thể, nhưng chỉ trong trường hợp tốt nhất của thuật toán B.
  • D. Chỉ khi thuật toán B được viết bằng ngôn ngữ lập trình nhanh hơn.

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, tại sao chúng ta thường chỉ quan tâm đến số lượng các phép toán cơ bản (như gán, so sánh, cộng, trừ) thay vì thời gian thực thi chính xác trên một máy tính cụ thể?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 2: Độ phức tạp thời gian O(n) mô tả mối quan hệ giữa thời gian thực thi và kích thước đầu vào n như thế nào?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 3: Cho đoạn mã giả sau:

```
function process(arr, n):
sum = 0
for i from 0 to n-1:
sum = sum + arr[i]
return sum
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu, với n là kích thước của mảng `arr`?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 4: Cho đoạn mã giả sau:

```
function find_max(arr, n):
max_val = arr[0]
for i from 1 to n-1:
if arr[i] > max_val:
max_val = arr[i]
return max_val
```

Độ phức tạp thời gian của đoạn mã này trong trường hợp xấu nhất (worst-case) là bao nhiêu, với n là kích thước của mảng `arr`?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 5: Thuật toán tìm kiếm nhị phân trên một mảng đã được sắp xếp có độ phức tạp thời gian là O(log n). Điều này có nghĩa là gì?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 6: Cho đoạn mã giả sau:

```
function print_pairs(arr, n):
for i from 0 to n-1:
for j from 0 to n-1:
print(arr[i], arr[j])
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu, với n là kích thước của mảng `arr`?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 7: Khi so sánh hai thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2) để giải cùng một bài toán với kích thước đầu vào n rất lớn, thuật toán nào thường được ưu tiên hơn và vì sao?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 8: Quy tắc cộng trong phân tích độ phức tạp thời gian được áp dụng khi nào?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 9: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi nào?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 10: Cho đoạn mã giả sau:

```
function example(n):
for i from 1 to 100:
print(i)
for j from 1 to n:
print(j)
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 11: Thuật toán nào sau đây thường có độ phức tạp thời gian tốt nhất (hiệu quả nhất) khi kích thước đầu vào n rất lớn?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 12: Độ phức tạp thời gian O(n^2) thường xuất hiện trong các thuật toán có cấu trúc như thế nào?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 13: Tại sao các hằng số và các thành phần bậc thấp thường bị bỏ qua trong ký hiệu Big O?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 14: Cho đoạn mã giả sau:

```
function example(arr, n):
if n <= 1: return // Chia mảng làm đôi mid = n / 2 left_half = arr[0...mid-1] right_half = arr[mid...n-1] // Gọi đệ quy trên hai nửa example(left_half, mid) example(right_half, n - mid) // Các thao tác kết hợp (ví dụ: trộn mảng đã sắp xếp) // ... (thực hiện trong thời gian O(n)) ``` Đây là cấu trúc của một thuật toán 'chia để trị' điển hình (ví dụ: Merge Sort). Độ phức tạp thời gian của các thuật toán dạng này thường là bao nhiêu?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 15: Tại sao việc đánh giá độ phức tạp thời gian (và không gian) của thuật toán lại quan trọng trong việc phát triển phần mềm?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 16: Cho đoạn mã giả:

```
function example(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 17: Thuật toán nào dưới đây, khi triển khai một cách cơ bản, thường có độ phức tạp thời gian là O(n^2)?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 18: Giả sử một thuật toán có độ phức tạp thời gian là T(n) = 5n^2 + 3n + 10. Khi sử dụng ký hiệu Big O để biểu diễn độ phức tạp, kết quả đúng là gì?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 19: Trường hợp tốt nhất (best-case) của một thuật toán là gì?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 20: Trường hợp xấu nhất (worst-case) của một thuật toán là gì?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 21: Cho đoạn mã giả:

```
function example(n):
sum = 0
for i from 1 to n:
sum = sum + i
j = 1
while j < n: print(j) j = j * 3 ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 22: Thuật toán tìm kiếm tuyến tính (Linear Search) trên một mảng có n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 23: Độ phức tạp thời gian O(1) có nghĩa là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 24: Cho đoạn mã giả:

```
function example(n):
for i from 1 to n:
for j from 1 to i:
print(i, j)
```

Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 25: Khi phân tích độ phức tạp thời gian của thuật toán, 'kích thước đầu vào' (input size) n thường được định nghĩa là gì?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 26: Giả sử bạn có hai thuật toán để giải quyết một bài toán: Thuật toán X có độ phức tạp O(n log n) và Thuật toán Y có độ phức tạp O(n^2). Với n = 1000, thuật toán nào có khả năng chạy nhanh hơn và tại sao?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 27: Thuật toán sắp xếp nào dưới đây, khi triển khai hiệu quả, có độ phức tạp thời gian trung bình là O(n log n)?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 28: Nếu một thuật toán có độ phức tạp thời gian là O(2^n), điều gì sẽ xảy ra với thời gian thực thi khi kích thước đầu vào n tăng lên một lượng nhỏ (ví dụ: tăng thêm 1 hoặc 2)?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 29: Cho đoạn mã giả:

```
function example(arr, n):
if n <= 0: return 0 if n == 1: return arr[0] // Giả sử hàm sum_array_recursive(arr, n) tính tổng n phần tử // bằng cách gọi đệ quy trên n-1 phần tử và cộng thêm phần tử cuối. // Độ phức tạp của hàm này là O(n). return sum_array_recursive(arr, n) ``` Độ phức tạp thời gian của hàm `example` gọi `sum_array_recursive` như mô tả là bao nhiêu?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 30: Khi so sánh hiệu quả của hai thuật toán A (O(n log n)) và B (O(n^2)) cho một bài toán, có trường hợp nào mà thuật toán B có thể chạy nhanh hơn thuật toán A không?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 03

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 03 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khái niệm "độ phức tạp thời gian" của một thuật toán chủ yếu đo lường điều gì?

  • A. Tổng dung lượng bộ nhớ mà thuật toán sử dụng.
  • B. Số lượng dòng mã lệnh trong thuật toán.
  • C. Số lượng phép toán cơ bản mà thuật toán thực hiện, phụ thuộc vào kích thước đầu vào.
  • D. Thời gian chạy thực tế của thuật toán trên một máy tính cụ thể.

Câu 2: Tại sao khi đánh giá độ phức tạp thời gian bằng ký hiệu Big O (O), chúng ta thường chỉ quan tâm đến hạng tử có bậc cao nhất và bỏ qua các hệ số hằng?

  • A. Vì khi kích thước đầu vào rất lớn, hạng tử có bậc cao nhất sẽ chi phối tốc độ tăng trưởng của hàm thời gian.
  • B. Vì các hệ số hằng và hạng tử bậc thấp không ảnh hưởng đến thời gian chạy thực tế.
  • C. Để làm cho việc tính toán độ phức tạp trở nên đơn giản hơn.
  • D. Vì chúng ta chỉ quan tâm đến trường hợp xấu nhất của thuật toán.

Câu 3: Xét đoạn mã giả sau:
```
a = 10
b = 20
if n > 0:
for i from 1 to n:
c = a + b
```
Với `n` là kích thước đầu vào, độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 4: Xét đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
for j from 1 to n:
sum = sum + 1
```
Với `n` là kích thước đầu vào, độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^3)
  • D. O(n^2)

Câu 5: Cho hai thuật toán A và B lần lượt có độ phức tạp thời gian là O(n log n) và O(n^2). Khi kích thước đầu vào `n` tăng lên rất lớn, thuật toán nào sẽ có hiệu suất (thời gian chạy) tốt hơn?

  • A. Thuật toán A (O(n log n)) vì n log n tăng trưởng chậm hơn n^2.
  • B. Thuật toán B (O(n^2)) vì n^2 là bậc cao hơn.
  • C. Cả hai thuật toán có hiệu suất tương đương cho n lớn.
  • D. Không thể xác định nếu không biết hệ số hằng của mỗi thuật toán.

Câu 6: Quy tắc cộng trong phân tích độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi có các vòng lặp lồng nhau.
  • B. Khi các khối lệnh hoặc các phần của thuật toán được thực hiện một cách tuần tự.
  • C. Khi một hàm gọi một hàm khác.
  • D. Khi phân tích độ phức tạp không phụ thuộc vào kích thước đầu vào.

Câu 7: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi một khối lệnh được thực hiện lặp đi lặp lại bên trong một cấu trúc lặp (ví dụ: vòng lặp lồng nhau).
  • B. Khi các khối lệnh được thực hiện tuần tự.
  • C. Khi so sánh độ phức tạp của hai thuật toán khác nhau.
  • D. Khi thuật toán sử dụng bộ nhớ phụ trợ.

Câu 8: Độ phức tạp thời gian O(1) có ý nghĩa gì?

  • A. Thời gian chạy tăng tuyến tính với kích thước đầu vào n.
  • B. Thời gian chạy tăng theo logarit của kích thước đầu vào n.
  • C. Thời gian chạy tăng theo bình phương của kích thước đầu vào n.
  • D. Thời gian chạy là hằng số, không phụ thuộc vào kích thước đầu vào n.

Câu 9: Thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 10: Xét đoạn mã giả sau:
```
result = 0
for i from 1 to 100:
result = result + i
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(1)
  • B. O(n)
  • C. O(100)
  • D. O(log n)

Câu 11: Khi phân tích độ phức tạp thời gian của một thuật toán, "trường hợp xấu nhất" (worst-case) thường được quan tâm nhất vì lý do gì?

  • A. Vì nó dễ phân tích hơn trường hợp trung bình và tốt nhất.
  • B. Vì nó xảy ra thường xuyên nhất trong thực tế.
  • C. Vì nó cung cấp giới hạn trên về thời gian chạy, đảm bảo thuật toán không bao giờ vượt quá hiệu suất đó.
  • D. Vì nó giúp so sánh thuật toán trên các bộ dữ liệu khác nhau.

Câu 12: Một thuật toán có độ phức tạp thời gian O(n log n). Điều này có nghĩa là gì về mối quan hệ giữa thời gian chạy và kích thước đầu vào n?

  • A. Thời gian chạy tăng tuyến tính với n.
  • B. Thời gian chạy tăng theo n nhân với logarit của n.
  • C. Thời gian chạy tăng theo bình phương của n.
  • D. Thời gian chạy là hằng số.

Câu 13: Xét đoạn mã giả sau:
```
for i from 1 to n:
j = 1
while j < n: print(i, j) j = j * 2 ``` Với `n` là kích thước đầu vào, độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(log n)

Câu 14: Thuật toán sắp xếp chọn (Selection Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n log n)
  • D. O(n^2)

Câu 15: Cho một thuật toán có hàm thời gian T(n) = 5n³ + 20n² + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

  • A. O(n³)
  • B. O(n²)
  • C. O(n)
  • D. O(1)

Câu 16: Một thuật toán có độ phức tạp O(2^n). Điều này có ý nghĩa gì đối với việc sử dụng thuật toán này với kích thước đầu vào `n` lớn?

  • A. Thuật toán rất hiệu quả và có thể xử lý dữ liệu lớn dễ dàng.
  • B. Thời gian chạy tăng trưởng tuyến tính, nên phù hợp với mọi kích thước đầu vào.
  • C. Thời gian chạy tăng trưởng rất nhanh (theo cấp số mũ), khiến thuật toán không khả thi cho các giá trị n lớn.
  • D. Thuật toán có thời gian chạy hằng số, không phụ thuộc vào n.

Câu 17: Khi phân tích độ phức tạp của một cấu trúc điều kiện (if-else), độ phức tạp tổng thể thường được tính bằng cách nào?

  • A. Bằng tổng độ phức tạp của nhánh if và nhánh else.
  • B. Bằng độ phức tạp của nhánh có thời gian chạy lớn nhất (trong trường hợp xấu nhất).
  • C. Bằng tích độ phức tạp của nhánh if và nhánh else.
  • D. Bằng độ phức tạp của điều kiện (biểu thức logic) của if.

Câu 18: Xét đoạn mã giả sau:
```
func process_array(arr, n):
# Đoạn 1: Tìm phần tử nhỏ nhất (O(n))
min_val = arr[0]
for i from 1 to n-1:
if arr[i] < min_val: min_val = arr[i] # Đoạn 2: In ra 10 lần giá trị min_val (O(1)) for k from 1 to 10: print(min_val) ``` Độ phức tạp thời gian tổng thể của hàm `process_array` là gì?

  • A. O(1)
  • B. O(n^2)
  • C. O(n)
  • D. O(n log n)

Câu 19: Thứ tự tăng trưởng từ chậm nhất đến nhanh nhất của các độ phức tạp phổ biến là gì?

  • A. O(n), O(log n), O(n^2), O(n log n)
  • B. O(1), O(log n), O(n), O(n log n), O(n^2)
  • C. O(n^2), O(n log n), O(n), O(log n), O(1)
  • D. O(log n), O(1), O(n), O(n^2), O(n log n)

Câu 20: Giả sử một thuật toán có độ phức tạp thời gian là O(n^2). Nếu kích thước đầu vào `n` tăng gấp đôi, thì thời gian chạy của thuật toán sẽ tăng lên khoảng bao nhiêu lần (đối với n đủ lớn)?

  • A. Gấp đôi (2 lần)
  • B. Gấp ba (3 lần)
  • C. Gấp log n lần
  • D. Gấp bốn lần (4 lần)

Câu 21: Giả sử một thuật toán có độ phức tạp thời gian là O(log n). Nếu kích thước đầu vào `n` tăng gấp đôi, thì thời gian chạy của thuật toán sẽ tăng lên khoảng bao nhiêu (đối với n đủ lớn)?

  • A. Tăng thêm một lượng hằng số.
  • B. Tăng gấp đôi.
  • C. Tăng theo log của log n.
  • D. Không thay đổi.

Câu 22: Ký hiệu O lớn (Big O) dùng để chỉ điều gì khi phân tích độ phức tạp thời gian?

  • A. Giới hạn trên (trường hợp xấu nhất) về tốc độ tăng trưởng thời gian chạy.
  • B. Giới hạn dưới (trường hợp tốt nhất) về tốc độ tăng trưởng thời gian chạy.
  • C. Thời gian chạy trung bình của thuật toán.
  • D. Thời gian chạy chính xác của thuật toán.

Câu 23: Một chương trình thực hiện ba phần tuần tự: Phần 1 có độ phức tạp O(n), Phần 2 có độ phức tạp O(n²), và Phần 3 có độ phức tạp O(log n). Độ phức tạp thời gian tổng thể của chương trình là gì?

  • A. O(n + n² + log n)
  • B. O(n log n)
  • C. O(n)
  • D. O(n²)

Câu 24: Xét đoạn mã giả sau:
```
func process(n):
if n <= 1: return for i from 1 to 10: print(i) process(n/2) process(n/2) ``` Đoạn mã này mô tả cấu trúc gì và độ phức tạp thời gian của phần đệ quy (không xét vòng lặp cố định) thường rơi vào loại nào?

  • A. Đệ quy, thường O(n log n) hoặc O(n) trong các trường hợp điển hình như chia để trị.
  • B. Vòng lặp lồng nhau, thường O(n^2).
  • C. Vòng lặp đơn, thường O(n).
  • D. Cấu trúc hằng số, O(1).

Câu 25: Việc phân tích độ phức tạp thời gian của thuật toán giúp ích gì cho lập trình viên?

  • A. Giúp tìm lỗi cú pháp trong mã nguồn.
  • B. Giúp giảm thiểu việc sử dụng bộ nhớ.
  • C. Giúp dự đoán thời gian chạy chính xác trên mọi máy tính.
  • D. Giúp đánh giá hiệu suất của thuật toán khi xử lý dữ liệu lớn và so sánh các thuật toán khác nhau.

Câu 26: Xét đoạn mã giả sau:
```
func example(arr, n):
for i from 0 to n-1:
if arr[i] == target_value:
return True
return False
```
Đây là thuật toán tìm kiếm tuyến tính (Linear Search). Độ phức tạp thời gian trong trường hợp xấu nhất của nó là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(n^2)

Câu 27: Cho một thuật toán có độ phức tạp O(n^3). Nếu một máy tính có thể chạy thuật toán này với n=100 trong 1 giây, ước tính thời gian cần thiết để chạy thuật toán với n=200 trên cùng máy tính đó là bao nhiêu?

  • A. 2 giây
  • B. 4 giây
  • C. 6 giây
  • D. 8 giây

Câu 28: Khi so sánh hai thuật toán có độ phức tạp O(n) và O(n log n), điều gì đúng khi n rất lớn?

  • A. Thuật toán O(n) sẽ chạy nhanh hơn thuật toán O(n log n).
  • B. Thuật toán O(n log n) sẽ chạy nhanh hơn thuật toán O(n).
  • C. Hai thuật toán có hiệu suất tương đương.
  • D. Không thể so sánh vì cần biết hệ số hằng.

Câu 29: Xét đoạn mã giả sau:
```
func weird_loop(n):
count = 0
for i from 1 to n:
for j from i to n:
count = count + 1
```
Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n³)
  • D. O(n²)

Câu 30: Mục tiêu chính của việc đánh giá độ phức tạp thời gian thuật toán là gì?

  • A. Để so sánh hiệu quả và khả năng mở rộng của các thuật toán khác nhau khi xử lý dữ liệu lớn.
  • B. Để xác định số lượng bộ nhớ cần thiết cho thuật toán.
  • C. Để tìm ra thuật toán có ít dòng mã nhất.
  • D. Để đảm bảo thuật toán không bao giờ gặp lỗi.

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 1: Khái niệm 'độ phức tạp thời gian' của một thuật toán chủ yếu đo lường điều gì?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 2: Tại sao khi đánh giá độ phức tạp thời gian bằng ký hiệu Big O (O), chúng ta thường chỉ quan tâm đến hạng tử có bậc cao nhất và bỏ qua các hệ số hằng?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 3: Xét đoạn mã giả sau:
```
a = 10
b = 20
if n > 0:
for i from 1 to n:
c = a + b
```
Với `n` là kích thước đầu vào, độ phức tạp thời gian của đoạn mã này là gì?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 4: Xét đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
for j from 1 to n:
sum = sum + 1
```
Với `n` là kích thước đầu vào, độ phức tạp thời gian của đoạn mã này là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 5: Cho hai thuật toán A và B lần lượt có độ phức tạp thời gian là O(n log n) và O(n^2). Khi kích thước đầu vào `n` tăng lên rất lớn, thuật toán nào sẽ có hiệu suất (thời gian chạy) tốt hơn?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 6: Quy tắc cộng trong phân tích độ phức tạp thời gian được áp dụng khi nào?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 7: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi nào?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 8: Độ phức tạp thời gian O(1) có ý nghĩa gì?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 9: Thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 10: Xét đoạn mã giả sau:
```
result = 0
for i from 1 to 100:
result = result + i
```
Độ phức tạp thời gian của đoạn mã này là gì?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 11: Khi phân tích độ phức tạp thời gian của một thuật toán, 'trường hợp xấu nhất' (worst-case) thường được quan tâm nhất vì lý do gì?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 12: Một thuật toán có độ phức tạp thời gian O(n log n). Điều này có nghĩa là gì về mối quan hệ giữa thời gian chạy và kích thước đầu vào n?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 13: Xét đoạn mã giả sau:
```
for i from 1 to n:
j = 1
while j < n: print(i, j) j = j * 2 ``` Với `n` là kích thước đầu vào, độ phức tạp thời gian của đoạn mã này là gì?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 14: Thuật toán sắp xếp chọn (Selection Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 15: Cho một thuật toán có hàm thời gian T(n) = 5n³ + 20n² + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 16: Một thuật toán có độ phức tạp O(2^n). Điều này có ý nghĩa gì đối với việc sử dụng thuật toán này với kích thước đầu vào `n` lớn?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 17: Khi phân tích độ phức tạp của một cấu trúc điều kiện (if-else), độ phức tạp tổng thể thường được tính bằng cách nào?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 18: Xét đoạn mã giả sau:
```
func process_array(arr, n):
# Đoạn 1: Tìm phần tử nhỏ nhất (O(n))
min_val = arr[0]
for i from 1 to n-1:
if arr[i] < min_val: min_val = arr[i] # Đoạn 2: In ra 10 lần giá trị min_val (O(1)) for k from 1 to 10: print(min_val) ``` Độ phức tạp thời gian tổng thể của hàm `process_array` là gì?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 19: Thứ tự tăng trưởng từ chậm nhất đến nhanh nhất của các độ phức tạp phổ biến là gì?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 20: Giả sử một thuật toán có độ phức tạp thời gian là O(n^2). Nếu kích thước đầu vào `n` tăng gấp đôi, thì thời gian chạy của thuật toán sẽ tăng lên khoảng bao nhiêu lần (đối với n đủ lớn)?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 21: Giả sử một thuật toán có độ phức tạp thời gian là O(log n). Nếu kích thước đầu vào `n` tăng gấp đôi, thì thời gian chạy của thuật toán sẽ tăng lên khoảng bao nhiêu (đối với n đủ lớn)?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 22: Ký hiệu O lớn (Big O) dùng để chỉ điều gì khi phân tích độ phức tạp thời gian?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 23: Một chương trình thực hiện ba phần tuần tự: Phần 1 có độ phức tạp O(n), Phần 2 có độ phức tạp O(n²), và Phần 3 có độ phức tạp O(log n). Độ phức tạp thời gian tổng thể của chương trình là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 24: Xét đoạn mã giả sau:
```
func process(n):
if n <= 1: return for i from 1 to 10: print(i) process(n/2) process(n/2) ``` Đoạn mã này mô tả cấu trúc gì và độ phức tạp thời gian của phần đệ quy (không xét vòng lặp cố định) thường rơi vào loại nào?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 25: Việc phân tích độ phức tạp thời gian của thuật toán giúp ích gì cho lập trình viên?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 26: Xét đoạn mã giả sau:
```
func example(arr, n):
for i from 0 to n-1:
if arr[i] == target_value:
return True
return False
```
Đây là thuật toán tìm kiếm tuyến tính (Linear Search). Độ phức tạp thời gian trong trường hợp xấu nhất của nó là gì?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 27: Cho một thuật toán có độ phức tạp O(n^3). Nếu một máy tính có thể chạy thuật toán này với n=100 trong 1 giây, ước tính thời gian cần thiết để chạy thuật toán với n=200 trên cùng máy tính đó là bao nhiêu?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 28: Khi so sánh hai thuật toán có độ phức tạp O(n) và O(n log n), điều gì đúng khi n rất lớn?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 29: Xét đoạn mã giả sau:
```
func weird_loop(n):
count = 0
for i from 1 to n:
for j from i to n:
count = count + 1
```
Độ phức tạp thời gian của đoạn mã này là gì?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 30: Mục tiêu chính của việc đánh giá độ phức tạp thời gian thuật toán là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 04

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 04 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Tại sao việc đánh giá độ phức tạp thời gian của thuật toán lại quan trọng trong khoa học máy tính?

  • A. Giúp xác định số dòng code trong chương trình.
  • B. Chỉ cần thiết cho các thuật toán sắp xếp.
  • C. Giúp tìm ra lỗi cú pháp trong code.
  • D. Giúp dự đoán hiệu suất của thuật toán khi kích thước dữ liệu đầu vào tăng lên và so sánh hiệu quả giữa các thuật toán.

Câu 2: Khi phân tích độ phức tạp thời gian, chúng ta thường quan tâm đến trường hợp nào của dữ liệu đầu vào và tại sao?

  • A. Trường hợp tốt nhất, vì nó thể hiện tốc độ nhanh nhất có thể.
  • B. Trường hợp trung bình, vì nó phản ánh hiệu suất thực tế thường gặp.
  • C. Trường hợp xấu nhất, vì nó đảm bảo thuật toán sẽ không bao giờ chạy chậm hơn mức ước lượng đó.
  • D. Trường hợp tốt nhất và trung bình có ý nghĩa như nhau.

Câu 3: Ký hiệu Big O (O) được sử dụng để làm gì trong đánh giá độ phức tạp thời gian?

  • A. Biểu thị thời gian chạy chính xác của thuật toán trên một máy cụ thể.
  • B. Mô tả giới hạn trên về tốc độ tăng trưởng của thời gian chạy khi kích thước đầu vào rất lớn.
  • C. Đếm chính xác tổng số phép toán cơ bản.
  • D. Đo lường dung lượng bộ nhớ mà thuật toán sử dụng.

Câu 4: Một thuật toán có độ phức tạp thời gian O(1) nghĩa là gì?

  • A. Thời gian thực hiện không đổi, không phụ thuộc vào kích thước đầu vào n.
  • B. Thời gian thực hiện tăng tuyến tính theo kích thước đầu vào n.
  • C. Thời gian thực hiện tăng theo hàm logarit của n.
  • D. Thời gian thực hiện tăng theo bình phương của n.

Câu 5: Cho đoạn mã Python sau:
```python
result = 0
for i in range(n):
result += i
```
Độ phức tạp thời gian của đoạn mã này là gì theo ký hiệu Big O, với n là kích thước đầu vào?

  • A. O(1)
  • B. O(n^2)
  • C. O(n)
  • D. O(log n)

Câu 6: Cho đoạn mã Python sau:
```python
result = 0
for i in range(n):
for j in range(n):
result += i * j
```
Độ phức tạp thời gian của đoạn mã này là gì theo ký hiệu Big O, với n là kích thước đầu vào?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(2^n)

Câu 7: Cho hai đoạn mã A và B. Đoạn A có độ phức tạp O(n), đoạn B có độ phức tạp O(n^2). Nếu thực hiện đoạn mã A rồi đến đoạn mã B, độ phức tạp thời gian tổng thể là gì theo ký hiệu Big O?

  • A. O(n + n^2)
  • B. O(n^2)
  • C. O(n)
  • D. O(n^3)

Câu 8: Một thuật toán tìm kiếm trên một mảng đã được sắp xếp bằng phương pháp chia đôi (tìm kiếm nhị phân) có độ phức tạp thời gian là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(1)
  • D. O(log n)

Câu 9: Sắp xếp các độ phức tạp thời gian sau theo thứ tự từ tốt nhất (nhanh nhất) đến tệ nhất (chậm nhất) khi n rất lớn: O(n^2), O(n), O(1), O(n log n).

  • A. O(n^2), O(n log n), O(n), O(1)
  • B. O(n), O(n^2), O(1), O(n log n)
  • C. O(1), O(n), O(n log n), O(n^2)
  • D. O(log n), O(n), O(n log n), O(n^2)

Câu 10: Một thuật toán xử lý tất cả các cặp phần tử trong một tập hợp n phần tử. Ví dụ: so sánh mọi cặp phần tử với nhau. Độ phức tạp thời gian phổ biến nhất cho hoạt động này là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(log n)

Câu 11: Cho đoạn mã Python sau:
```python
def process_data(data):
n = len(data)
for i in range(n // 2):
print(data[i])
```
Độ phức tạp thời gian của hàm `process_data` là gì theo ký hiệu Big O, với n là kích thước danh sách `data`?

  • A. O(n^2)
  • B. O(log n)
  • C. O(n)
  • D. O(1)

Câu 12: Cho đoạn mã Python sau:
```python
def find_element(data, target):
for item in data:
if item == target:
return True
return False
```
Trong trường hợp xấu nhất, độ phức tạp thời gian của hàm `find_element` (tìm kiếm tuyến tính) là gì theo ký hiệu Big O, với n là kích thước danh sách `data`?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 13: Giả sử một thuật toán có thời gian chạy được mô tả bởi hàm T(n) = 5n^3 + 2n^2 + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(1)
  • D. O(n^3)

Câu 14: Khi so sánh thuật toán A có độ phức tạp O(n log n) và thuật toán B có độ phức tạp O(n^2), thuật toán nào hiệu quả hơn (chạy nhanh hơn) khi kích thước đầu vào n rất lớn?

  • A. Thuật toán A (O(n log n))
  • B. Thuật toán B (O(n^2))
  • C. Cả hai thuật toán có hiệu quả tương đương.
  • D. Không thể xác định nếu không biết giá trị cụ thể của n.

Câu 15: Cho đoạn mã Python sau:
```python
def example(n):
for i in range(100):
print(i)
for j in range(n):
print(j)
```
Độ phức tạp thời gian của hàm `example` là gì theo ký hiệu Big O, với n là kích thước đầu vào?

  • A. O(100 + n)
  • B. O(100n)
  • C. O(n)
  • D. O(1)

Câu 16: Cho đoạn mã Python sau:
```python
def another_example(n):
i = 1
while i < n: print(i) i *= 2 ``` Độ phức tạp thời gian của hàm `another_example` là gì theo ký hiệu Big O, với n là kích thước đầu vào?

  • A. O(n)
  • B. O(n^2)
  • C. O(1)
  • D. O(log n)

Câu 17: Khi phân tích độ phức tạp thời gian, tại sao chúng ta thường bỏ qua các hằng số và các số hạng bậc thấp trong hàm thời gian T(n)?

  • A. Vì chúng không ảnh hưởng đến thời gian chạy thực tế.
  • B. Vì chúng chỉ ảnh hưởng nhỏ khi kích thước đầu vào n rất lớn và ký hiệu Big O quan tâm đến tốc độ tăng trưởng tiệm cận.
  • C. Vì chúng chỉ liên quan đến dung lượng bộ nhớ, không phải thời gian.
  • D. Vì chúng làm cho việc tính toán trở nên phức tạp.

Câu 18: Thuật toán sắp xếp nổi bọt (Bubble Sort) đơn giản có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^2)
  • D. O(log n)

Câu 19: Một bài toán yêu cầu duyệt qua tất cả các tập con có thể có của một tập hợp n phần tử. Độ phức tạp thời gian của thuật toán giải quyết bài toán này có khả năng là gì?

  • A. O(2^n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(n!)

Câu 20: Cho đoạn mã Python sau:
```python
def process_matrix(matrix, n):
for i in range(n):
for j in range(n):
# Thao tác O(1) trên matrix[i][j]
pass
for k in range(n):
# Thao tác O(1)
pass
```
Độ phức tạp thời gian của hàm `process_matrix` là gì theo ký hiệu Big O, với n là kích thước (số hàng/cột) của ma trận vuông?

  • A. O(n)
  • B. O(n + n^2)
  • C. O(n^2)
  • D. O(n^3)

Câu 21: Độ phức tạp thời gian O(n log n) thường xuất hiện trong các thuật toán nào?

  • A. Tìm kiếm tuyến tính, tìm kiếm nhị phân.
  • B. Các thuật toán sắp xếp hiệu quả như Sắp xếp trộn (Merge Sort), Sắp xếp nhanh (Quick Sort).
  • C. Các phép toán cơ bản (cộng, trừ, nhân, chia).
  • D. Duyệt qua tất cả các tập con của một tập hợp.

Câu 22: Nếu một thuật toán có độ phức tạp O(n) và chạy mất 1 giây cho n=1000, ước tính thời gian chạy cho n=2000 là bao nhiêu?

  • A. Khoảng 2 giây.
  • B. Khoảng 4 giây.
  • C. Khoảng 0.5 giây.
  • D. Không thể ước tính vì không biết hệ số hằng số.

Câu 23: Nếu một thuật toán có độ phức tạp O(n^2) và chạy mất 1 giây cho n=1000, ước tính thời gian chạy cho n=2000 là bao nhiêu?

  • A. Khoảng 2 giây.
  • B. Khoảng 4 giây.
  • C. Khoảng 0.5 giây.
  • D. Khoảng 8 giây.

Câu 24: Cho đoạn mã Python sau:
```python
def process_pairs(data):
n = len(data)
for i in range(n):
for j in range(i, n):
# Thao tác O(1) với data[i] và data[j]
pass
```
Độ phức tạp thời gian của hàm `process_pairs` là gì theo ký hiệu Big O, với n là kích thước danh sách `data`?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^2)
  • D. O(log n)

Câu 25: Trong phân tích độ phức tạp, "kích thước đầu vào" (input size) của một thuật toán là gì?

  • A. Một đại lượng đo lường quy mô của dữ liệu mà thuật toán xử lý (ví dụ: số phần tử trong danh sách).
  • B. Số dòng code trong chương trình.
  • C. Thời gian chạy thực tế của thuật toán.
  • D. Lượng bộ nhớ mà thuật toán sử dụng.

Câu 26: Độ phức tạp thời gian O(n!) (n giai thừa) thuộc loại độ phức tạp nào và nó thường xuất hiện trong các bài toán gì?

  • A. Đa thức, thường trong các bài toán tìm kiếm.
  • B. Logarit, thường trong các bài toán chia để trị.
  • C. Mũ, thường trong các bài toán duyệt tất cả tập con.
  • D. Siêu đa thức, thường trong các bài toán liên quan đến hoán vị.

Câu 27: Khi nào thì độ phức tạp thời gian của một thuật toán được coi là chấp nhận được trong thực tế?

  • A. Khi độ phức tạp là đa thức (ví dụ: O(n), O(n log n), O(n^2)) với bậc nhỏ.
  • B. Chỉ khi độ phức tạp là O(1) hoặc O(log n).
  • C. Khi độ phức tạp là mũ (ví dụ: O(2^n)).
  • D. Chỉ khi thời gian chạy thực tế dưới 1 giây.

Câu 28: Cho đoạn mã Python sau:
```python
def strange_loop(n):
count = 0
for i in range(n):
for j in range(i):
count += 1
```
Độ phức tạp thời gian của hàm `strange_loop` là gì theo ký hiệu Big O, với n là kích thước đầu vào?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(log n)

Câu 29: Tại sao việc phân tích độ phức tạp thời gian thường tập trung vào trường hợp xấu nhất?

  • A. Vì trường hợp xấu nhất dễ phân tích nhất.
  • B. Vì trường hợp xấu nhất luôn xảy ra trong thực tế.
  • C. Vì nó cung cấp giới hạn trên về thời gian chạy, đảm bảo thuật toán không bao giờ chạy chậm hơn mức đó.
  • D. Vì nó thể hiện hiệu suất trung bình của thuật toán.

Câu 30: Cho một thuật toán thực hiện hai bước độc lập. Bước 1 có độ phức tạp O(log n), Bước 2 có độ phức tạp O(n). Độ phức tạp tổng thể của thuật toán là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(log n + n)

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 1: Tại sao việc đánh giá độ phức tạp thời gian của thuật toán lại quan trọng trong khoa học máy tính?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 2: Khi phân tích độ phức tạp thời gian, chúng ta thường quan tâm đến trường hợp nào của dữ liệu đầu vào và tại sao?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 3: Ký hiệu Big O (O) được sử dụng để làm gì trong đánh giá độ phức tạp thời gian?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 4: Một thuật toán có độ phức tạp thời gian O(1) nghĩa là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 5: Cho đoạn mã Python sau:
```python
result = 0
for i in range(n):
result += i
```
Độ phức tạp thời gian của đoạn mã này là gì theo ký hiệu Big O, với n là kích thước đầu vào?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 6: Cho đoạn mã Python sau:
```python
result = 0
for i in range(n):
for j in range(n):
result += i * j
```
Độ phức tạp thời gian của đoạn mã này là gì theo ký hiệu Big O, với n là kích thước đầu vào?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 7: Cho hai đoạn mã A và B. Đoạn A có độ phức tạp O(n), đoạn B có độ phức tạp O(n^2). Nếu thực hiện đoạn mã A rồi đến đoạn mã B, độ phức tạp thời gian tổng thể là gì theo ký hiệu Big O?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 8: Một thuật toán tìm kiếm trên một mảng đã được sắp xếp bằng phương pháp chia đôi (tìm kiếm nhị phân) có độ phức tạp thời gian là gì?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 9: Sắp xếp các độ phức tạp thời gian sau theo thứ tự từ tốt nhất (nhanh nhất) đến tệ nhất (chậm nhất) khi n rất lớn: O(n^2), O(n), O(1), O(n log n).

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 10: Một thuật toán xử lý tất cả các cặp phần tử trong một tập hợp n phần tử. Ví dụ: so sánh mọi cặp phần tử với nhau. Độ phức tạp thời gian phổ biến nhất cho hoạt động này là gì?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 11: Cho đoạn mã Python sau:
```python
def process_data(data):
n = len(data)
for i in range(n // 2):
print(data[i])
```
Độ phức tạp thời gian của hàm `process_data` là gì theo ký hiệu Big O, với n là kích thước danh sách `data`?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 12: Cho đoạn mã Python sau:
```python
def find_element(data, target):
for item in data:
if item == target:
return True
return False
```
Trong trường hợp xấu nhất, độ phức tạp thời gian của hàm `find_element` (tìm kiếm tuyến tính) là gì theo ký hiệu Big O, với n là kích thước danh sách `data`?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 13: Giả sử một thuật toán có thời gian chạy được mô tả bởi hàm T(n) = 5n^3 + 2n^2 + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu Big O là gì?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 14: Khi so sánh thuật toán A có độ phức tạp O(n log n) và thuật toán B có độ phức tạp O(n^2), thuật toán nào hiệu quả hơn (chạy nhanh hơn) khi kích thước đầu vào n rất lớn?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 15: Cho đoạn mã Python sau:
```python
def example(n):
for i in range(100):
print(i)
for j in range(n):
print(j)
```
Độ phức tạp thời gian của hàm `example` là gì theo ký hiệu Big O, với n là kích thước đầu vào?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 16: Cho đoạn mã Python sau:
```python
def another_example(n):
i = 1
while i < n: print(i) i *= 2 ``` Độ phức tạp thời gian của hàm `another_example` là gì theo ký hiệu Big O, với n là kích thước đầu vào?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 17: Khi phân tích độ phức tạp thời gian, tại sao chúng ta thường bỏ qua các hằng số và các số hạng bậc thấp trong hàm thời gian T(n)?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 18: Thuật toán sắp xếp nổi bọt (Bubble Sort) đơn giản có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 19: Một bài toán yêu cầu duyệt qua tất cả các tập con có thể có của một tập hợp n phần tử. Độ phức tạp thời gian của thuật toán giải quyết bài toán này có khả năng là gì?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 20: Cho đoạn mã Python sau:
```python
def process_matrix(matrix, n):
for i in range(n):
for j in range(n):
# Thao tác O(1) trên matrix[i][j]
pass
for k in range(n):
# Thao tác O(1)
pass
```
Độ phức tạp thời gian của hàm `process_matrix` là gì theo ký hiệu Big O, với n là kích thước (số hàng/cột) của ma trận vuông?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 21: Độ phức tạp thời gian O(n log n) thường xuất hiện trong các thuật toán nào?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 22: Nếu một thuật toán có độ phức tạp O(n) và chạy mất 1 giây cho n=1000, ước tính thời gian chạy cho n=2000 là bao nhiêu?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 23: Nếu một thuật toán có độ phức tạp O(n^2) và chạy mất 1 giây cho n=1000, ước tính thời gian chạy cho n=2000 là bao nhiêu?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 24: Cho đoạn mã Python sau:
```python
def process_pairs(data):
n = len(data)
for i in range(n):
for j in range(i, n):
# Thao tác O(1) với data[i] và data[j]
pass
```
Độ phức tạp thời gian của hàm `process_pairs` là gì theo ký hiệu Big O, với n là kích thước danh sách `data`?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 25: Trong phân tích độ phức tạp, 'kích thước đầu vào' (input size) của một thuật toán là gì?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 26: Độ phức tạp thời gian O(n!) (n giai thừa) thuộc loại độ phức tạp nào và nó thường xuất hiện trong các bài toán gì?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 27: Khi nào thì độ phức tạp thời gian của một thuật toán được coi là chấp nhận được trong thực tế?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 28: Cho đoạn mã Python sau:
```python
def strange_loop(n):
count = 0
for i in range(n):
for j in range(i):
count += 1
```
Độ phức tạp thời gian của hàm `strange_loop` là gì theo ký hiệu Big O, với n là kích thước đầu vào?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 29: Tại sao việc phân tích độ phức tạp thời gian thường tập trung vào trường hợp xấu nhất?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 30: Cho một thuật toán thực hiện hai bước độc lập. Bước 1 có độ phức tạp O(log n), Bước 2 có độ phức tạp O(n). Độ phức tạp tổng thể của thuật toán là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 05

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 05 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi đánh giá độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến yếu tố nào của đầu vào?

  • A. Giá trị cụ thể của từng phần tử trong đầu vào.
  • B. Kích thước của dữ liệu đầu vào (thường ký hiệu là n).
  • C. Thời gian thực tế mà chương trình chạy trên một máy tính cụ thể.
  • D. Ngôn ngữ lập trình được sử dụng để cài đặt thuật toán.

Câu 2: Độ phức tạp thời gian O(1) biểu thị điều gì về thời gian thực hiện của một thuật toán?

  • A. Thời gian thực hiện tăng tuyến tính theo kích thước đầu vào n.
  • B. Thời gian thực hiện tăng theo logarit của kích thước đầu vào n.
  • C. Thời gian thực hiện là hằng số, không phụ thuộc vào kích thước đầu vào n.
  • D. Thời gian thực hiện tăng theo bình phương của kích thước đầu vào n.

Câu 3: Cho đoạn mã Python sau:
```python
def process_array(arr):
total = 0
for x in arr:
total += x
return total
```
Với `n` là kích thước của mảng `arr`, độ phức tạp thời gian của hàm `process_array` là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(log n)
  • D. O(1)

Câu 4: Cho đoạn mã Python sau:
```python
def find_pair(arr):
n = len(arr)
for i in range(n):
for j in range(n):
if arr[i] + arr[j] == 0:
return True
return False
```
Với `n` là kích thước của mảng `arr`, độ phức tạp thời gian của hàm `find_pair` là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(log n)

Câu 5: Khi phân tích độ phức tạp thời gian bằng ký hiệu Big O, chúng ta thường bỏ qua các yếu tố nào?

  • A. Chỉ số của vòng lặp.
  • B. Tên biến.
  • C. Số lượng tham số của hàm.
  • D. Các hằng số nhân và các số hạng bậc thấp.

Câu 6: Một thuật toán có thời gian thực hiện được mô tả bởi hàm T(n) = 3n^2 + 5n + 100. Độ phức tạp thời gian theo ký hiệu Big O của thuật toán này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(n^3)

Câu 7: Quy tắc cộng trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi các khối lệnh hoặc hàm được thực hiện nối tiếp nhau.
  • B. Khi có các vòng lặp lồng nhau.
  • C. Khi một hàm gọi một hàm khác.
  • D. Khi có các phép toán số học đơn giản.

Câu 8: Quy tắc nhân trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi các khối lệnh hoặc hàm được thực hiện nối tiếp nhau.
  • B. Khi một khối lệnh (có độ phức tạp T1) được thực hiện bên trong một vòng lặp hoặc khối lệnh khác (có độ phức tạp T2).
  • C. Khi so sánh hai thuật toán khác nhau.
  • D. Khi tính tổng thời gian thực hiện của tất cả các lệnh.

Câu 9: Cho đoạn mã Python sau:
```python
def example_func(n):
if n <= 1: return 1 else: print("Hello") return example_func(n-1) + example_func(n-2) ``` Độ phức tạp thời gian của hàm đệ quy này (ví dụ tính số Fibonacci cơ bản) là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(log n)
  • D. O(2^n)

Câu 10: Thuật toán Tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có độ phức tạp thời gian trung bình là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(log n)
  • D. O(1)

Câu 11: Độ phức tạp thời gian O(n log n) thường xuất hiện trong các loại thuật toán nào?

  • A. Các thuật toán sắp xếp hiệu quả (ví dụ: Merge Sort, Quick Sort).
  • B. Các thuật toán tìm kiếm tuyến tính.
  • C. Các thuật toán có vòng lặp lồng nhau đơn giản.
  • D. Các thuật toán có thời gian thực hiện không đổi.

Câu 12: Giả sử thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2). Khi kích thước đầu vào n rất lớn, thuật toán nào sẽ có thời gian thực hiện tốt hơn?

  • A. Thuật toán A (O(n)).
  • B. Thuật toán B (O(n^2)).
  • C. Thời gian thực hiện của cả hai thuật toán là như nhau.
  • D. Không thể xác định nếu không biết hằng số.

Câu 13: Tại sao việc đánh giá độ phức tạp thời gian lại quan trọng trong lập trình, đặc biệt khi xử lý dữ liệu lớn?

  • A. Giúp chương trình chạy nhanh hơn trên mọi máy tính.
  • B. Giúp giảm dung lượng bộ nhớ mà chương trình sử dụng.
  • C. Giúp xác định lỗi cú pháp trong mã nguồn.
  • D. Giúp dự đoán hiệu suất của thuật toán khi kích thước đầu vào tăng lên và so sánh các thuật toán khác nhau.

Câu 14: Cho đoạn mã Python:
```python
def simple_ops(a, b):
c = a + b
d = c * 2
return d / 3
```
Độ phức tạp thời gian của hàm `simple_ops` là gì?

  • A. O(n) (phụ thuộc vào giá trị của a, b)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 15: Khi nói về độ phức tạp thời gian của thuật toán, trường hợp "xấu nhất" (worst-case) có ý nghĩa gì?

  • A. Thời gian thực hiện tối đa mà thuật toán có thể mất cho một đầu vào có kích thước n.
  • B. Thời gian thực hiện trung bình cho một đầu vào có kích thước n.
  • C. Thời gian thực hiện tối thiểu cho một đầu vào có kích thước n.
  • D. Thời gian thực hiện khi thuật toán gặp lỗi.

Câu 16: Cho đoạn mã Python sau:
```python
def process_data(arr):
n = len(arr)
# Block 1
for i in range(n):
print(arr[i])
# Block 2
for i in range(n):
for j in range(n):
print(arr[i], arr[j])
```
Với `n` là kích thước mảng `arr`, độ phức tạp thời gian của hàm `process_data` là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(n + n^2)

Câu 17: Một thuật toán có độ phức tạp O(log n) có nghĩa là gì?

  • A. Thời gian thực hiện tăng chậm khi kích thước đầu vào n tăng, thường liên quan đến việc chia nhỏ bài toán.
  • B. Thời gian thực hiện tăng rất nhanh khi kích thước đầu vào n tăng.
  • C. Thời gian thực hiện tăng tuyến tính theo kích thước đầu vào n.
  • D. Thời gian thực hiện không đổi với mọi kích thước đầu vào.

Câu 18: Sắp xếp các độ phức tạp thời gian sau từ hiệu quả nhất đến kém hiệu quả nhất khi n rất lớn: O(n^2), O(log n), O(n), O(n log n).

  • A. O(n^2), O(n log n), O(n), O(log n)
  • B. O(n), O(log n), O(n^2), O(n log n)
  • C. O(log n), O(n), O(n log n), O(n^2)
  • D. O(log n), O(n log n), O(n), O(n^2)

Câu 19: Nếu một thuật toán có độ phức tạp O(n) mất 5 giây để xử lý đầu vào có kích thước n = 1000, thì ước tính nó sẽ mất bao lâu để xử lý đầu vào có kích thước n = 2000?

  • A. Khoảng 10 giây.
  • B. Khoảng 20 giây.
  • C. Khoảng 5 giây.
  • D. Khoảng 25 giây.

Câu 20: Nếu một thuật toán có độ phức tạp O(n^2) mất 2 giây để xử lý đầu vào có kích thước n = 100, thì ước tính nó sẽ mất bao lâu để xử lý đầu vào có kích thước n = 300?

  • A. Khoảng 6 giây.
  • B. Khoảng 18 giây.
  • C. Khoảng 36 giây.
  • D. Khoảng 18 giây (kích thước tăng 3 lần, thời gian tăng 3^2=9 lần, 2*9=18).

Câu 21: Cho đoạn mã Python sau:
```python
def mystery(n):
count = 0
i = 1
while i < n: count += 1 i *= 2 return count ``` Với `n` là số nguyên dương, độ phức tạp thời gian của hàm `mystery` là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n^2)
  • D. O(1)

Câu 22: Trong phân tích độ phức tạp thời gian, ký hiệu Ω (Omega lớn) biểu thị điều gì?

  • A. Giới hạn trên chặt của thời gian thực hiện (worst-case).
  • B. Giới hạn trung bình của thời gian thực hiện (average-case).
  • C. Giới hạn dưới của thời gian thực hiện (best-case).
  • D. Độ phức tạp chính xác.

Câu 23: Một thuật toán duyệt qua tất cả các cặp phần tử có thể có trong một danh sách n phần tử. Độ phức tạp thời gian điển hình của thuật toán này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n log n)
  • D. O(n^2)

Câu 24: Tại sao các hằng số và các số hạng bậc thấp lại bị bỏ qua trong ký hiệu Big O khi n đủ lớn?

  • A. Vì khi n rất lớn, sự đóng góp của các số hạng bậc cao hơn trở nên chi phối hoàn toàn.
  • B. Vì chúng luôn bằng 0.
  • C. Vì chúng chỉ ảnh hưởng đến độ phức tạp không gian, không phải thời gian.
  • D. Vì chúng chỉ quan trọng đối với các đầu vào nhỏ.

Câu 25: Thuật toán sắp xếp nổi bọt (Bubble Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(log n)

Câu 26: Cho đoạn mã Python sau:
```python
def another_func(n):
total = 0
for i in range(100): # Vòng lặp chạy 100 lần cố định
total += i
for j in range(n):
total += j
return total
```
Với `n` là kích thước đầu vào, độ phức tạp thời gian của hàm `another_func` là gì?

  • A. O(n)
  • B. O(100 + n)
  • C. O(100n)
  • D. O(1)

Câu 27: Khi so sánh hai thuật toán A (O(n log n)) và B (O(n^2)), thuật toán nào sẽ trở nên vượt trội hơn khi kích thước dữ liệu n tăng lên đáng kể?

  • A. Thuật toán A (O(n log n))
  • B. Thuật toán B (O(n^2))
  • C. Cả hai thuật toán có hiệu suất tương đương.
  • D. Không thể xác định mà không biết giá trị cụ thể của n.

Câu 28: Trường hợp "tốt nhất" (best-case) của độ phức tạp thời gian của một thuật toán biểu thị điều gì?

  • A. Thời gian thực hiện trung bình cho một đầu vào có kích thước n.
  • B. Thời gian thực hiện tối đa mà thuật toán có thể mất cho một đầu vào có kích thước n.
  • C. Thời gian thực hiện khi bộ nhớ đầy.
  • D. Thời gian thực hiện tối thiểu mà thuật toán có thể mất cho một đầu vào có kích thước n.

Câu 29: Cho đoạn mã Python sau:
```python
def process_matrix(matrix):
rows = len(matrix)
cols = len(matrix[0]) # Giả sử ma trận không rỗng
for i in range(rows):
for j in range(cols):
print(matrix[i][j])
```
Với ma trận có kích thước `m` hàng và `n` cột, độ phức tạp thời gian của hàm `process_matrix` là gì?

  • A. O(m)
  • B. O(n)
  • C. O(m * n)
  • D. O(m + n)

Câu 30: Mục đích chính của việc sử dụng ký hiệu Big O là để làm gì?

  • A. Tính toán chính xác số mili giây mà thuật toán sẽ chạy.
  • B. Mô tả cách thời gian thực hiện của thuật toán thay đổi khi kích thước đầu vào tăng lên.
  • C. So sánh hiệu quả của thuật toán trên các phần cứng máy tính khác nhau.
  • D. Xác định ngôn ngữ lập trình tốt nhất để cài đặt thuật toán.

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 1: Khi đánh giá độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến yếu tố nào của đầu vào?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 2: Độ phức tạp thời gian O(1) biểu thị điều gì về thời gian thực hiện của một thuật toán?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 3: Cho đoạn mã Python sau:
```python
def process_array(arr):
total = 0
for x in arr:
total += x
return total
```
Với `n` là kích thước của mảng `arr`, độ phức tạp thời gian của hàm `process_array` là gì?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 4: Cho đoạn mã Python sau:
```python
def find_pair(arr):
n = len(arr)
for i in range(n):
for j in range(n):
if arr[i] + arr[j] == 0:
return True
return False
```
Với `n` là kích thước của mảng `arr`, độ phức tạp thời gian của hàm `find_pair` là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 5: Khi phân tích độ phức tạp thời gian bằng ký hiệu Big O, chúng ta thường bỏ qua các yếu tố nào?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 6: Một thuật toán có thời gian thực hiện được mô tả bởi hàm T(n) = 3n^2 + 5n + 100. Độ phức tạp thời gian theo ký hiệu Big O của thuật toán này là gì?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 7: Quy tắc cộng trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 8: Quy tắc nhân trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 9: Cho đoạn mã Python sau:
```python
def example_func(n):
if n <= 1: return 1 else: print('Hello') return example_func(n-1) + example_func(n-2) ``` Độ phức tạp thời gian của hàm đệ quy này (ví dụ tính số Fibonacci cơ bản) là gì?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 10: Thuật toán Tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có độ phức tạp thời gian trung bình là gì?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 11: Độ phức tạp thời gian O(n log n) thường xuất hiện trong các loại thuật toán nào?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 12: Giả sử thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2). Khi kích thước đầu vào n rất lớn, thuật toán nào sẽ có thời gian thực hiện tốt hơn?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 13: Tại sao việc đánh giá độ phức tạp thời gian lại quan trọng trong lập trình, đặc biệt khi xử lý dữ liệu lớn?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 14: Cho đoạn mã Python:
```python
def simple_ops(a, b):
c = a + b
d = c * 2
return d / 3
```
Độ phức tạp thời gian của hàm `simple_ops` là gì?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 15: Khi nói về độ phức tạp thời gian của thuật toán, trường hợp 'xấu nhất' (worst-case) có ý nghĩa gì?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 16: Cho đoạn mã Python sau:
```python
def process_data(arr):
n = len(arr)
# Block 1
for i in range(n):
print(arr[i])
# Block 2
for i in range(n):
for j in range(n):
print(arr[i], arr[j])
```
Với `n` là kích thước mảng `arr`, độ phức tạp thời gian của hàm `process_data` là gì?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 17: Một thuật toán có độ phức tạp O(log n) có nghĩa là gì?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 18: Sắp xếp các độ phức tạp thời gian sau từ hiệu quả nhất đến kém hiệu quả nhất khi n rất lớn: O(n^2), O(log n), O(n), O(n log n).

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 19: Nếu một thuật toán có độ phức tạp O(n) mất 5 giây để xử lý đầu vào có kích thước n = 1000, thì ước tính nó sẽ mất bao lâu để xử lý đầu vào có kích thước n = 2000?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 20: Nếu một thuật toán có độ phức tạp O(n^2) mất 2 giây để xử lý đầu vào có kích thước n = 100, thì ước tính nó sẽ mất bao lâu để xử lý đầu vào có kích thước n = 300?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 21: Cho đoạn mã Python sau:
```python
def mystery(n):
count = 0
i = 1
while i < n: count += 1 i *= 2 return count ``` Với `n` là số nguyên dương, độ phức tạp thời gian của hàm `mystery` là gì?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 22: Trong phân tích độ phức tạp thời gian, ký hiệu Ω (Omega lớn) biểu thị điều gì?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 23: Một thuật toán duyệt qua tất cả các cặp phần tử có thể có trong một danh sách n phần tử. Độ phức tạp thời gian điển hình của thuật toán này là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 24: Tại sao các hằng số và các số hạng bậc thấp lại bị bỏ qua trong ký hiệu Big O khi n đủ lớn?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 25: Thuật toán sắp xếp nổi bọt (Bubble Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 26: Cho đoạn mã Python sau:
```python
def another_func(n):
total = 0
for i in range(100): # Vòng lặp chạy 100 lần cố định
total += i
for j in range(n):
total += j
return total
```
Với `n` là kích thước đầu vào, độ phức tạp thời gian của hàm `another_func` là gì?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 27: Khi so sánh hai thuật toán A (O(n log n)) và B (O(n^2)), thuật toán nào sẽ trở nên vượt trội hơn khi kích thước dữ liệu n tăng lên đáng kể?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 28: Trường hợp 'tốt nhất' (best-case) của độ phức tạp thời gian của một thuật toán biểu thị điều gì?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 29: Cho đoạn mã Python sau:
```python
def process_matrix(matrix):
rows = len(matrix)
cols = len(matrix[0]) # Giả sử ma trận không rỗng
for i in range(rows):
for j in range(cols):
print(matrix[i][j])
```
Với ma trận có kích thước `m` hàng và `n` cột, độ phức tạp thời gian của hàm `process_matrix` là gì?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 30: Mục đích chính của việc sử dụng ký hiệu Big O là để làm gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 06

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 06 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi đánh giá độ phức tạp thời gian của một thuật toán, yếu tố nào sau đây được xem là quan trọng nhất khi kích thước đầu vào (n) trở nên rất lớn?

  • A. Các hằng số nhân và các số hạng bậc thấp.
  • B. Tốc độ xử lý của máy tính cụ thể.
  • C. Bộ nhớ mà thuật toán sử dụng.
  • D. Tốc độ tăng trưởng của số phép toán cơ bản theo n.

Câu 2: Một đoạn chương trình có cấu trúc như sau: `for i in range(n): # Thực hiện một phép toán cơ bản ở đây`. Độ phức tạp thời gian của đoạn chương trình này theo ký hiệu Big O là gì?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 3: Cho đoạn chương trình có cấu trúc: `for i in range(n): for j in range(n): # Thực hiện một phép toán cơ bản ở đây`. Độ phức tạp thời gian của đoạn chương trình này theo ký hiệu Big O là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(2n)
  • D. O(n^2)

Câu 4: Một thuật toán thực hiện hai công việc nối tiếp nhau. Công việc thứ nhất có độ phức tạp O(n), công việc thứ hai có độ phức tạp O(n^2). Độ phức tạp thời gian tổng thể của thuật toán này là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n + n^2)
  • D. O(n * n^2) = O(n^3)

Câu 5: Một thuật toán sử dụng vòng lặp `while` trong đó biến điều khiển được nhân đôi (hoặc chia đôi) sau mỗi lần lặp cho đến khi đạt đến kích thước đầu vào n. Độ phức tạp thời gian của loại vòng lặp này thường là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n/2)
  • D. O(1)

Câu 6: Tại sao trong ký hiệu Big O, các hằng số nhân (ví dụ: 2 trong 2n) và các số hạng bậc thấp (ví dụ: n trong n^2 + n) thường bị bỏ qua khi n rất lớn?

  • A. Vì chúng không ảnh hưởng đến thời gian chạy thực tế.
  • B. Vì chúng chỉ quan trọng với kích thước đầu vào nhỏ.
  • C. Vì tốc độ tăng trưởng của số hạng bậc cao nhất sẽ chi phối hoàn toàn khi n đủ lớn.
  • D. Vì việc tính toán chúng rất phức tạp.

Câu 7: Cho hai thuật toán A có độ phức tạp O(n log n) và thuật toán B có độ phức tạp O(n^1.5). Khi kích thước đầu vào n rất lớn, thuật toán nào có hiệu quả hơn (chạy nhanh hơn)?

  • A. Thuật toán A.
  • B. Thuật toán B.
  • C. Cả hai thuật toán có hiệu quả như nhau.
  • D. Không thể xác định nếu không biết giá trị cụ thể của n.

Câu 8: Độ phức tạp thời gian O(1) biểu thị điều gì về thời gian chạy của thuật toán?

  • A. Thời gian chạy tăng tuyến tính theo kích thước đầu vào n.
  • B. Thời gian chạy tăng theo logarit của kích thước đầu vào n.
  • C. Thời gian chạy tăng theo bình phương của kích thước đầu vào n.
  • D. Thời gian chạy là hằng số, không phụ thuộc vào kích thước đầu vào n.

Câu 9: Thuật toán tìm kiếm nào trong một mảng đã sắp xếp có thể đạt được độ phức tạp thời gian O(log n) trong trường hợp xấu nhất?

  • A. Tìm kiếm tuyến tính (Linear Search).
  • B. Tìm kiếm nhị phân (Binary Search).
  • C. Tìm kiếm theo chiều sâu (Depth-First Search).
  • D. Tìm kiếm theo chiều rộng (Breadth-First Search).

Câu 10: Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian O(n^2) trong trường hợp xấu nhất?

  • A. Sắp xếp chọn (Selection Sort).
  • B. Sắp xếp trộn (Merge Sort).
  • C. Sắp xếp nhanh (Quick Sort) - trung bình.
  • D. Sắp xếp vun đống (Heap Sort).

Câu 11: Cho hàm T(n) = 5n^3 + 200n + 10000. Độ phức tạp thời gian của hàm này theo ký hiệu Big O là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(n^3)
  • D. O(10000)

Câu 12: Một đoạn mã thực hiện các bước sau: 1) Duyệt qua toàn bộ mảng kích thước n (O(n)), sau đó 2) Thực hiện một số phép tính cố định (O(1)). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

  • A. O(1)
  • B. O(n)
  • C. O(n + 1)
  • D. O(n*1) = O(n)

Câu 13: Một đoạn mã gọi một hàm khác bên trong một vòng lặp. Vòng lặp chạy n lần, và hàm được gọi có độ phức tạp O(log n). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

  • A. O(n + log n)
  • B. O(max(n, log n))
  • C. O(log n)
  • D. O(n log n)

Câu 14: Trường hợp nào sau đây thường dẫn đến độ phức tạp thời gian O(2^n) hoặc cao hơn (như O(n!))?

  • A. Các bài toán tìm kiếm vét cạn không có hiệu quả (ví dụ: bài toán người du lịch).
  • B. Các thuật toán sắp xếp hiệu quả (ví dụ: Merge Sort).
  • C. Các thuật toán tìm kiếm trên dữ liệu đã sắp xếp (ví dụ: Binary Search).
  • D. Các phép toán truy cập trực tiếp vào bộ nhớ (ví dụ: truy cập phần tử mảng theo chỉ số).

Câu 15: Tại sao việc phân tích độ phức tạp thời gian trường hợp xấu nhất (worst-case) lại quan trọng trong đánh giá thuật toán?

  • A. Vì trường hợp xấu nhất luôn xảy ra phổ biến nhất.
  • B. Vì nó cung cấp giới hạn trên cho thời gian chạy, đảm bảo thuật toán sẽ không bao giờ chậm hơn mức đó.
  • C. Vì trường hợp xấu nhất là dễ phân tích nhất.
  • D. Vì nó phản ánh hiệu suất trung bình của thuật toán.

Câu 16: Cho đoạn mã sau: `def process(data): n = len(data); for i in range(n // 2): print(data[i])`. Độ phức tạp thời gian của hàm `process` là gì?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 17: Cho đoạn mã sau: `def example(data): n = len(data); for i in range(n): pass; for j in range(n): pass`. Độ phức tạp thời gian của hàm `example` là gì?

  • A. O(n^2)
  • B. O(n)
  • C. O(2n)
  • D. O(log n)

Câu 18: Độ phức tạp O(n log n) thường xuất hiện trong các thuật toán nào?

  • A. Các thuật toán sắp xếp dựa trên so sánh hiệu quả (Merge Sort, Quick Sort trung bình).
  • B. Các thuật toán tìm kiếm trên mảng không sắp xếp (Linear Search).
  • C. Các phép toán hằng số (Constant time operations).
  • D. Các thuật toán có vòng lặp lồng nhau đơn giản (Bubble Sort).

Câu 19: Nếu một bài toán có thể giải quyết được bằng thuật toán O(n^2) và một thuật toán khác là O(n), khi n đủ lớn, sự khác biệt về thời gian chạy giữa hai thuật toán sẽ như thế nào?

  • A. Thuật toán O(n^2) sẽ chạy nhanh hơn.
  • B. Thời gian chạy của hai thuật toán sẽ gần như bằng nhau.
  • C. Thuật toán O(n^2) sẽ chạy chậm hơn đáng kể so với O(n).
  • D. Không thể dự đoán được sự khác biệt.

Câu 20: Truy cập một phần tử bất kỳ trong mảng bằng chỉ số (ví dụ: `arr[i]`) trong hầu hết các ngôn ngữ lập trình có độ phức tạp thời gian là bao nhiêu?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(i)

Câu 21: Ký hiệu O lớn (Big O) mô tả giới hạn nào của thời gian chạy thuật toán?

  • A. Giới hạn dưới (best-case).
  • B. Giới hạn trên (worst-case).
  • C. Trường hợp trung bình (average-case).
  • D. Độ chính xác của kết quả.

Câu 22: Nếu một thuật toán có độ phức tạp O(log n), điều này có nghĩa là gì khi kích thước đầu vào tăng gấp đôi?

  • A. Thời gian chạy cũng tăng gấp đôi.
  • B. Thời gian chạy tăng theo bình phương.
  • C. Thời gian chạy chỉ tăng một lượng nhỏ (một hằng số).
  • D. Thời gian chạy giảm đi một nửa.

Câu 23: Cho đoạn mã: `def analyze(data): n = len(data); if n > 1000: for i in range(n): print(data[i]) else: print("Data too small")`. Độ phức tạp thời gian trường hợp xấu nhất của hàm `analyze` là gì?

  • A. O(1)
  • B. O(1000)
  • C. O(n)
  • D. O(n^2)

Câu 24: Điều gì xảy ra với độ phức tạp thời gian Big O của một thuật toán nếu bạn tăng gấp đôi tốc độ của bộ xử lý máy tính?

  • A. Độ phức tạp Big O giảm đi một nửa.
  • B. Độ phức tạp Big O tăng gấp đôi.
  • C. Độ phức tạp Big O chuyển sang bậc thấp hơn.
  • D. Độ phức tạp Big O không thay đổi, chỉ có hằng số thời gian thực tế thay đổi.

Câu 25: Tại sao việc phân tích độ phức tạp thời gian lại quan trọng đối với lập trình viên, đặc biệt khi làm việc với dữ liệu lớn?

  • A. Giúp dự đoán hiệu suất của thuật toán khi kích thước dữ liệu tăng và lựa chọn thuật toán phù hợp.
  • B. Giúp xác định số dòng code tối thiểu cần thiết.
  • C. Giúp cải thiện giao diện người dùng của chương trình.
  • D. Giúp giảm thiểu lỗi cú pháp trong code.

Câu 26: Cho hàm T(n) = log₂(n) + 5. Độ phức tạp thời gian của hàm này theo ký hiệu Big O là gì?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(log n + 5)

Câu 27: So với O(n^2), độ phức tạp O(n log n) được coi là hiệu quả hơn đáng kể cho các bài toán sắp xếp trên tập dữ liệu lớn. Điều này là do:

  • A. log n luôn lớn hơn n khi n lớn.
  • B. n log n tăng trưởng nhanh hơn n^2.
  • C. n log n chỉ áp dụng cho dữ liệu đã sắp xếp.
  • D. n log n tăng trưởng chậm hơn đáng kể so với n^2 khi n lớn.

Câu 28: Một thuật toán có độ phức tạp O(n!). Đối với kích thước đầu vào n = 20, thuật toán này có khả năng:

  • A. Chạy rất chậm và không khả thi trong thực tế.
  • B. Chạy gần như tức thời.
  • C. Chạy với tốc độ tương đương một thuật toán O(n^2).
  • D. Chỉ khả thi nếu chạy trên siêu máy tính.

Câu 29: Trong phân tích độ phức tạp thời gian, "phép toán cơ bản" (basic operation) là gì?

  • A. Luôn là phép gán giá trị.
  • B. Luôn là phép so sánh.
  • C. Một thao tác có thời gian thực hiện không phụ thuộc vào kích thước đầu vào, được sử dụng làm đơn vị đo lường.
  • D. Bất kỳ dòng lệnh nào trong chương trình.

Câu 30: Nếu một thuật toán có độ phức tạp thời gian O(n), điều này có nghĩa là khi kích thước đầu vào tăng gấp 3 lần, thời gian chạy (xấp xỉ) sẽ:

  • A. Giảm đi 3 lần.
  • B. Tăng gấp 3 lần.
  • C. Tăng gấp 9 lần.
  • D. Không thay đổi.

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 1: Khi đánh giá độ phức tạp thời gian của một thuật toán, yếu tố nào sau đây được xem là quan trọng nhất khi kích thước đầu vào (n) trở nên rất lớn?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 2: Một đoạn chương trình có cấu trúc như sau: `for i in range(n): # Thực hiện một phép toán cơ bản ở đây`. Độ phức tạp thời gian của đoạn chương trình này theo ký hiệu Big O là gì?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 3: Cho đoạn chương trình có cấu trúc: `for i in range(n): for j in range(n): # Thực hiện một phép toán cơ bản ở đây`. Độ phức tạp thời gian của đoạn chương trình này theo ký hiệu Big O là gì?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 4: Một thuật toán thực hiện hai công việc nối tiếp nhau. Công việc thứ nhất có độ phức tạp O(n), công việc thứ hai có độ phức tạp O(n^2). Độ phức tạp thời gian tổng thể của thuật toán này là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 5: Một thuật toán sử dụng vòng lặp `while` trong đó biến điều khiển được nhân đôi (hoặc chia đôi) sau mỗi lần lặp cho đến khi đạt đến kích thước đầu vào n. Độ phức tạp thời gian của loại vòng lặp này thường là gì?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 6: Tại sao trong ký hiệu Big O, các hằng số nhân (ví dụ: 2 trong 2n) và các số hạng bậc thấp (ví dụ: n trong n^2 + n) thường bị bỏ qua khi n rất lớn?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 7: Cho hai thuật toán A có độ phức tạp O(n log n) và thuật toán B có độ phức tạp O(n^1.5). Khi kích thước đầu vào n rất lớn, thuật toán nào có hiệu quả hơn (chạy nhanh hơn)?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 8: Độ phức tạp thời gian O(1) biểu thị điều gì về thời gian chạy của thuật toán?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 9: Thuật toán tìm kiếm nào trong một mảng đã sắp xếp có thể đạt được độ phức tạp thời gian O(log n) trong trường hợp xấu nhất?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 10: Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian O(n^2) trong trường hợp xấu nhất?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 11: Cho hàm T(n) = 5n^3 + 200n + 10000. Độ phức tạp thời gian của hàm này theo ký hiệu Big O là gì?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 12: Một đoạn mã thực hiện các bước sau: 1) Duyệt qua toàn bộ mảng kích thước n (O(n)), sau đó 2) Thực hiện một số phép tính cố định (O(1)). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 13: Một đoạn mã gọi một hàm khác bên trong một vòng lặp. Vòng lặp chạy n lần, và hàm được gọi có độ phức tạp O(log n). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 14: Trường hợp nào sau đây thường dẫn đến độ phức tạp thời gian O(2^n) hoặc cao hơn (như O(n!))?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 15: Tại sao việc phân tích độ phức tạp thời gian trường hợp xấu nhất (worst-case) lại quan trọng trong đánh giá thuật toán?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 16: Cho đoạn mã sau: `def process(data): n = len(data); for i in range(n // 2): print(data[i])`. Độ phức tạp thời gian của hàm `process` là gì?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 17: Cho đoạn mã sau: `def example(data): n = len(data); for i in range(n): pass; for j in range(n): pass`. Độ phức tạp thời gian của hàm `example` là gì?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 18: Độ phức tạp O(n log n) thường xuất hiện trong các thuật toán nào?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 19: Nếu một bài toán có thể giải quyết được bằng thuật toán O(n^2) và một thuật toán khác là O(n), khi n đủ lớn, sự khác biệt về thời gian chạy giữa hai thuật toán sẽ như thế nào?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 20: Truy cập một phần tử bất kỳ trong mảng bằng chỉ số (ví dụ: `arr[i]`) trong hầu hết các ngôn ngữ lập trình có độ phức tạp thời gian là bao nhiêu?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 21: Ký hiệu O lớn (Big O) mô tả giới hạn nào của thời gian chạy thuật toán?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 22: Nếu một thuật toán có độ phức tạp O(log n), điều này có nghĩa là gì khi kích thước đầu vào tăng gấp đôi?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 23: Cho đoạn mã: `def analyze(data): n = len(data); if n > 1000: for i in range(n): print(data[i]) else: print('Data too small')`. Độ phức tạp thời gian trường hợp xấu nhất của hàm `analyze` là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 24: Điều gì xảy ra với độ phức tạp thời gian Big O của một thuật toán nếu bạn tăng gấp đôi tốc độ của bộ xử lý máy tính?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 25: Tại sao việc phân tích độ phức tạp thời gian lại quan trọng đối với lập trình viên, đặc biệt khi làm việc với dữ liệu lớn?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 26: Cho hàm T(n) = log₂(n) + 5. Độ phức tạp thời gian của hàm này theo ký hiệu Big O là gì?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 27: So với O(n^2), độ phức tạp O(n log n) được coi là hiệu quả hơn đáng kể cho các bài toán sắp xếp trên tập dữ liệu lớn. Điều này là do:

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 28: Một thuật toán có độ phức tạp O(n!). Đối với kích thước đầu vào n = 20, thuật toán này có khả năng:

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 29: Trong phân tích độ phức tạp thời gian, 'phép toán cơ bản' (basic operation) là gì?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 30: Nếu một thuật toán có độ phức tạp thời gian O(n), điều này có nghĩa là khi kích thước đầu vào tăng gấp 3 lần, thời gian chạy (xấp xỉ) sẽ:

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 07

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 07 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Tại sao việc đánh giá độ phức tạp thời gian của thuật toán lại quan trọng trong lập trình?

  • A. Để biết chính xác thời gian chạy trên một máy tính cụ thể.
  • B. Để so sánh tốc độ thực thi giữa các ngôn ngữ lập trình khác nhau.
  • C. Để xác định số dòng code cần viết cho thuật toán.
  • D. Để dự đoán sự thay đổi về thời gian chạy khi kích thước dữ liệu đầu vào tăng lên.

Câu 2: Khi phân tích độ phức tạp thời gian, chúng ta thường quan tâm đến trường hợp nào của dữ liệu đầu vào để đánh giá "tồi nhất" về hiệu suất?

  • A. Trường hợp tốt nhất (best-case).
  • B. Trường hợp trung bình (average-case).
  • C. Trường hợp xấu nhất (worst-case).
  • D. Trường hợp kích thước dữ liệu nhỏ.

Câu 3: Ký hiệu O lớn (Big O notation) được sử dụng để làm gì trong đánh giá độ phức tạp thời gian?

  • A. Để tính chính xác số lượng phép toán cơ bản mà thuật toán thực hiện.
  • B. Để biểu diễn tốc độ tăng trưởng của thời gian chạy khi kích thước đầu vào rất lớn.
  • C. Để so sánh thời gian chạy giữa hai thuật toán trên cùng một máy tính.
  • D. Để đo lường lượng bộ nhớ chính xác mà thuật toán sử dụng.

Câu 4: Một thuật toán có độ phức tạp thời gian được biểu diễn bởi hàm T(n) = 5n² + 3n + 10. Độ phức tạp thời gian theo ký hiệu O lớn của thuật toán này là gì?

  • A. O(n)
  • B. O(n³)
  • C. O(1)
  • D. O(n²)

Câu 5: Xét đoạn mã giả sau:

`tong = 0`
`cho i tu 1 den n:`
`tong = tong + i`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

  • A. O(n²)
  • B. O(n)
  • C. O(log n)
  • D. O(1)

Câu 6: Xét đoạn mã giả sau:

`cho i tu 1 den n:`
`cho j tu 1 den n:`
`in ra i * j`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

  • A. O(n²)
  • B. O(n)
  • C. O(2n)
  • D. O(log n)

Câu 7: Một thuật toán tìm kiếm trên một danh sách đã sắp xếp hoạt động bằng cách liên tục chia đôi danh sách tìm kiếm. Nếu danh sách có kích thước n, độ phức tạp thời gian của thuật toán này (trong trường hợp xấu nhất) là gì?

  • A. O(n)
  • B. O(n²)
  • C. O(log n)
  • D. O(1)

Câu 8: Quy tắc cộng trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi có các vòng lặp lồng nhau.
  • B. Khi các khối lệnh được thực hiện theo trình tự nối tiếp.
  • C. Khi thuật toán gọi chính nó (đệ quy).
  • D. Khi thực hiện các phép toán số học đơn giản.

Câu 9: Giả sử chương trình P bao gồm hai phần: Phần A có độ phức tạp O(n²) và Phần B có độ phức tạp O(n log n). Nếu Phần A chạy xong rồi đến Phần B chạy, độ phức tạp tổng thể của chương trình P là gì?

  • A. O(n²)
  • B. O(n log n)
  • C. O(n² + n log n)
  • D. O(n³ log n)

Câu 10: Quy tắc nhân trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi các khối lệnh được thực hiện theo trình tự nối tiếp.
  • B. Khi thuật toán có nhiều điều kiện rẽ nhánh (if-else).
  • C. Khi chỉ có một phép toán cơ bản được thực hiện.
  • D. Khi một khối lệnh có độ phức tạp T₁ được thực hiện lặp đi lặp lại M lần, với M có thể phụ thuộc vào kích thước đầu vào n.

Câu 11: Xét đoạn mã giả sau:

`cho i tu 1 den 100:`
`cho j tu 1 den n:`
`thuc hien phep tinh`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

  • A. O(n²)
  • B. O(n)
  • C. O(100n)
  • D. O(1)

Câu 12: Thuật toán nào sau đây có độ phức tạp thời gian điển hình là O(1)?

  • A. Truy cập một phần tử tại chỉ số cho trước trong mảng.
  • B. Tìm kiếm một phần tử trong danh sách chưa sắp xếp.
  • C. Sắp xếp một danh sách bằng thuật toán sắp xếp nổi bọt.
  • D. Tìm kiếm một phần tử trong danh sách đã sắp xếp bằng tìm kiếm nhị phân.

Câu 13: So sánh hai thuật toán: Thuật toán A có độ phức tạp O(n log n) và Thuật toán B có độ phức tạp O(n²). Với kích thước đầu vào n rất lớn, thuật toán nào thường có hiệu suất tốt hơn (chạy nhanh hơn)?

  • A. Thuật toán A (O(n log n))
  • B. Thuật toán B (O(n²))
  • C. Cả hai thuật toán có hiệu suất như nhau.
  • D. Không thể so sánh nếu không biết giá trị cụ thể của n.

Câu 14: Xét đoạn mã giả sau:

`i = 1`
`while i < n:` `thuc hien phep tinh` `i = i * 2` Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

  • A. O(n)
  • B. O(n/2)
  • C. O(log n)
  • D. O(1)

Câu 15: Tại sao khi phân tích độ phức tạp thời gian bằng ký hiệu O lớn, chúng ta thường bỏ qua các hằng số và các số hạng bậc thấp?

  • A. Vì chúng không ảnh hưởng đáng kể đến tốc độ tăng trưởng của thời gian chạy khi kích thước đầu vào rất lớn.
  • B. Vì chúng rất khó để tính toán chính xác.
  • C. Vì chúng chỉ liên quan đến tốc độ của máy tính, không phải thuật toán.
  • D. Vì chúng chỉ quan trọng trong trường hợp tốt nhất của thuật toán.

Câu 16: Một thuật toán xử lý từng phần tử trong một mảng n phần tử một lần duy nhất. Độ phức tạp thời gian của thuật toán này có khả năng là gì?

  • A. O(n²)
  • B. O(log n)
  • C. O(1)
  • D. O(n)

Câu 17: Xét đoạn mã giả sau:

`nua_n = n / 2`
`cho i tu 1 den nua_n:`
`thuc hien phep tinh`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n/2)
  • D. O(1)

Câu 18: Đâu là thứ tự tăng dần về tốc độ tăng trưởng của độ phức tạp thời gian khi n rất lớn?

  • A. O(n), O(log n), O(n²), O(1)
  • B. O(n²), O(n log n), O(n), O(log n)
  • C. O(1), O(log n), O(n), O(n log n), O(n²)
  • D. O(log n), O(1), O(n), O(n²)

Câu 19: Một thuật toán có độ phức tạp thời gian O(2^n). Điều này có ý nghĩa gì đối với hiệu suất của thuật toán khi n tăng lên?

  • A. Thời gian chạy tăng rất nhanh theo cấp số nhân khi n tăng, chỉ phù hợp với n nhỏ.
  • B. Thời gian chạy tăng tuyến tính với n, rất hiệu quả.
  • C. Thời gian chạy hầu như không đổi khi n tăng.
  • D. Thời gian chạy tăng theo logarit của n, rất hiệu quả với n lớn.

Câu 20: Xét hai chương trình A và B. Chương trình A gồm một vòng lặp chạy n lần, mỗi lần lặp mất O(1) thời gian. Chương trình B gồm hai vòng lặp lồng nhau, vòng ngoài chạy n lần, vòng trong chạy log n lần. Độ phức tạp của chương trình A và B lần lượt là gì?

  • A. A: O(n²), B: O(n log n)
  • B. A: O(log n), B: O(n²)
  • C. A: O(1), B: O(n log n)
  • D. A: O(n), B: O(n log n)

Câu 21: Khi phân tích một thuật toán, nếu thời gian thực hiện không phụ thuộc vào kích thước dữ liệu đầu vào n (ví dụ: luôn thực hiện một số phép toán cố định), thì độ phức tạp thời gian của thuật toán đó là gì?

  • A. O(1)
  • B. O(n)
  • C. O(log n)
  • D. O(n²)

Câu 22: Cho một đoạn mã giả có cấu trúc như sau:

`// Đoạn 1`
`cho i tu 1 den n:`
`thuc hien phep tinh O(1)`

`// Đoạn 2`
`cho j tu 1 den 1000:`
`thuc hien phep tinh O(1)`

Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

  • A. O(1000)
  • B. O(n + 1000)
  • C. O(n)
  • D. O(n * 1000)

Câu 23: Thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp một danh sách n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

  • A. O(n log n)
  • B. O(n²)
  • C. O(n)
  • D. O(log n)

Câu 24: Xét đoạn mã giả sau:

`sum = 0`
`i = 1`
`while i <= n:` `sum = sum + i` `i = i + 1` Đoạn mã này thực hiện một vòng lặp đơn giản. Độ phức tạp thời gian của nó là gì?

  • A. O(n²)
  • B. O(log n)
  • C. O(1)
  • D. O(n)

Câu 25: Một thuật toán xử lý dữ liệu theo kiểu "chia để trị", chia bài toán thành các bài toán con có kích thước bằng một nửa và kết hợp kết quả. Nếu việc chia và kết hợp mất thời gian tuyến tính O(k) trên bài toán con kích thước k, độ phức tạp điển hình của thuật toán này có thể là gì?

  • A. O(n log n)
  • B. O(n²)
  • C. O(log n)
  • D. O(n)

Câu 26: Khi so sánh hai thuật toán A (O(n log n)) và B (O(n²)), có thể tồn tại một ngưỡng giá trị n₀ sao cho với mọi n < n₀, thuật toán B chạy nhanh hơn thuật toán A. Điều này có ý nghĩa gì?

  • A. Ký hiệu Big O là hoàn toàn không chính xác.
  • B. Luôn luôn chọn thuật toán có Big O tốt nhất, bất kể kích thước n.
  • C. Hiệu suất thực tế với n nhỏ có thể bị ảnh hưởng bởi các hằng số và số hạng bậc thấp, khác với dự đoán của Big O cho n lớn.
  • D. Điều này chỉ xảy ra nếu có lỗi trong việc tính toán Big O.

Câu 27: Xét đoạn mã giả sau:

`cho i tu 1 den n:`
`cho j tu i den n:`
`thuc hien phep tinh`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(log n)
  • D. O(n²)

Câu 28: Nếu một thuật toán có độ phức tạp O(n!), nó thường được coi là không khả thi (intractable) đối với các giá trị n tương đối nhỏ. Tại sao?

  • A. Vì thuật toán sử dụng quá nhiều bộ nhớ.
  • B. Vì thời gian chạy tăng trưởng cực kỳ nhanh khi n tăng, ngay cả với n nhỏ.
  • C. Vì thuật toán luôn mắc lỗi khi n lớn.
  • D. Vì thuật toán chỉ hoạt động trên dữ liệu đã sắp xếp.

Câu 29: Khi phân tích độ phức tạp thời gian, thuật ngữ "phép toán cơ bản" (basic operation) thường được hiểu là gì?

  • A. Một hành động có thời gian thực hiện không phụ thuộc vào kích thước dữ liệu đầu vào n.
  • B. Toàn bộ một vòng lặp hoặc một hàm.
  • C. Một khối lệnh phức tạp bao gồm nhiều phép toán.
  • D. Chỉ các phép toán nhập/xuất dữ liệu.

Câu 30: Một thuật toán tìm kiếm tuyến tính (Linear Search) trên một danh sách n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

  • A. O(log n)
  • B. O(n²)
  • C. O(n)
  • D. O(1)

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 1: Tại sao việc đánh giá độ phức tạp thời gian của thuật toán lại quan trọng trong lập trình?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 2: Khi phân tích độ phức tạp thời gian, chúng ta thường quan tâm đến trường hợp nào của dữ liệu đầu vào để đánh giá 'tồi nhất' về hiệu suất?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 3: Ký hiệu O lớn (Big O notation) được sử dụng để làm gì trong đánh giá độ phức tạp thời gian?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 4: Một thuật toán có độ phức tạp thời gian được biểu diễn bởi hàm T(n) = 5n² + 3n + 10. Độ phức tạp thời gian theo ký hiệu O lớn của thuật toán này là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 5: Xét đoạn mã giả sau:

`tong = 0`
`cho i tu 1 den n:`
`tong = tong + i`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 6: Xét đoạn mã giả sau:

`cho i tu 1 den n:`
`cho j tu 1 den n:`
`in ra i * j`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 7: Một thuật toán tìm kiếm trên một danh sách đã sắp xếp hoạt động bằng cách liên tục chia đôi danh sách tìm kiếm. Nếu danh sách có kích thước n, độ phức tạp thời gian của thuật toán này (trong trường hợp xấu nhất) là gì?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 8: Quy tắc cộng trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 9: Giả sử chương trình P bao gồm hai phần: Phần A có độ phức tạp O(n²) và Phần B có độ phức tạp O(n log n). Nếu Phần A chạy xong rồi đến Phần B chạy, độ phức tạp tổng thể của chương trình P là gì?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 10: Quy tắc nhân trong đánh giá độ phức tạp thời gian được áp dụng khi nào?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 11: Xét đoạn mã giả sau:

`cho i tu 1 den 100:`
`cho j tu 1 den n:`
`thuc hien phep tinh`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 12: Thuật toán nào sau đây có độ phức tạp thời gian điển hình là O(1)?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 13: So sánh hai thuật toán: Thuật toán A có độ phức tạp O(n log n) và Thuật toán B có độ phức tạp O(n²). Với kích thước đầu vào n rất lớn, thuật toán nào thường có hiệu suất tốt hơn (chạy nhanh hơn)?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 14: Xét đoạn mã giả sau:

`i = 1`
`while i < n:` `thuc hien phep tinh` `i = i * 2` Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 15: Tại sao khi phân tích độ phức tạp thời gian bằng ký hiệu O lớn, chúng ta thường bỏ qua các hằng số và các số hạng bậc thấp?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 16: Một thuật toán xử lý từng phần tử trong một mảng n phần tử một lần duy nhất. Độ phức tạp thời gian của thuật toán này có khả năng là gì?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 17: Xét đoạn mã giả sau:

`nua_n = n / 2`
`cho i tu 1 den nua_n:`
`thuc hien phep tinh`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 18: Đâu là thứ tự tăng dần về tốc độ tăng trưởng của độ phức tạp thời gian khi n rất lớn?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 19: Một thuật toán có độ phức tạp thời gian O(2^n). Điều này có ý nghĩa gì đối với hiệu suất của thuật toán khi n tăng lên?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 20: Xét hai chương trình A và B. Chương trình A gồm một vòng lặp chạy n lần, mỗi lần lặp mất O(1) thời gian. Chương trình B gồm hai vòng lặp lồng nhau, vòng ngoài chạy n lần, vòng trong chạy log n lần. Độ phức tạp của chương trình A và B lần lượt là gì?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 21: Khi phân tích một thuật toán, nếu thời gian thực hiện không phụ thuộc vào kích thước dữ liệu đầu vào n (ví dụ: luôn thực hiện một số phép toán cố định), thì độ phức tạp thời gian của thuật toán đó là gì?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 22: Cho một đoạn mã giả có cấu trúc như sau:

`// Đoạn 1`
`cho i tu 1 den n:`
`thuc hien phep tinh O(1)`

`// Đoạn 2`
`cho j tu 1 den 1000:`
`thuc hien phep tinh O(1)`

Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 23: Thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp một danh sách n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 24: Xét đoạn mã giả sau:

`sum = 0`
`i = 1`
`while i <= n:` `sum = sum + i` `i = i + 1` Đoạn mã này thực hiện một vòng lặp đơn giản. Độ phức tạp thời gian của nó là gì?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 25: Một thuật toán xử lý dữ liệu theo kiểu 'chia để trị', chia bài toán thành các bài toán con có kích thước bằng một nửa và kết hợp kết quả. Nếu việc chia và kết hợp mất thời gian tuyến tính O(k) trên bài toán con kích thước k, độ phức tạp điển hình của thuật toán này có thể là gì?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 26: Khi so sánh hai thuật toán A (O(n log n)) và B (O(n²)), có thể tồn tại một ngưỡng giá trị n₀ sao cho với mọi n < n₀, thuật toán B chạy nhanh hơn thuật toán A. Điều này có ý nghĩa gì?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 27: Xét đoạn mã giả sau:

`cho i tu 1 den n:`
`cho j tu i den n:`
`thuc hien phep tinh`

Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là gì?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 28: Nếu một thuật toán có độ phức tạp O(n!), nó thường được coi là không khả thi (intractable) đối với các giá trị n tương đối nhỏ. Tại sao?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 29: Khi phân tích độ phức tạp thời gian, thuật ngữ 'phép toán cơ bản' (basic operation) thường được hiểu là gì?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 30: Một thuật toán tìm kiếm tuyến tính (Linear Search) trên một danh sách n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 08

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 08 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Khi đánh giá độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến đại lượng nào để thể hiện kích thước của bài toán?

  • A. Số lượng biến sử dụng
  • B. Tốc độ xử lý của máy tính
  • C. Ngôn ngữ lập trình
  • D. Kích thước dữ liệu đầu vào (n)

Câu 2: Ký hiệu O lớn (Big O notation) được sử dụng để làm gì trong phân tích độ phức tạp thời gian thuật toán?

  • A. Biểu diễn cận trên của tốc độ tăng trưởng thời gian thực hiện khi kích thước đầu vào rất lớn.
  • B. Biểu diễn thời gian thực hiện chính xác của thuật toán cho mọi kích thước đầu vào.
  • C. Biểu diễn thời gian thực hiện trung bình của thuật toán.
  • D. Biểu diễn lượng bộ nhớ mà thuật toán sử dụng.

Câu 3: Xét đoạn mã giả sau:
```
a = b + 5
print(a)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(1)
  • C. O(log n)
  • D. O(n^2)

Câu 4: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
for i from 1 to n:
print(i)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n^2)

Câu 5: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
for i from 1 to n:
for j from 1 to n:
print(i * j)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n log n)
  • D. O(n^2)

Câu 6: Một thuật toán tìm kiếm trên một mảng đã sắp xếp bằng cách liên tục chia đôi phạm vi tìm kiếm. Độ phức tạp thời gian điển hình của thuật toán này (tìm kiếm nhị phân) là bao nhiêu trong trường hợp xấu nhất?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(n^2)

Câu 7: Quy tắc cộng trong phân tích độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi có các vòng lặp lồng nhau.
  • B. Khi gọi một hàm bên trong một vòng lặp.
  • C. Khi hai hoặc nhiều đoạn mã được thực hiện một cách tuần tự (nối tiếp nhau).
  • D. Khi so sánh hai thuật toán khác nhau.

Câu 8: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi nào?

  • A. Khi hai đoạn mã được thực hiện song song.
  • B. Khi một đoạn mã (ví dụ: một vòng lặp hoặc lời gọi hàm) được thực hiện nhiều lần bên trong một cấu trúc lặp khác.
  • C. Khi các lệnh đơn được thực hiện tuần tự.
  • D. Khi kích thước đầu vào n rất lớn.

Câu 9: Cho hàm thời gian thực hiện của một thuật toán là T(n) = 5n^3 + 2n^2 + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu O lớn là gì?

  • A. O(n^2)
  • B. O(n^3 + n^2)
  • C. O(n^3 + 100)
  • D. O(n^3)

Câu 10: Tại sao khi sử dụng ký hiệu O lớn, chúng ta bỏ qua các hệ số hằng số và các số hạng bậc thấp?

  • A. Vì ký hiệu O lớn mô tả tốc độ tăng trưởng của thời gian thực hiện khi n tiến tới vô cùng, lúc đó các số hạng bậc cao chiếm ưu thế.
  • B. Vì các hệ số hằng số và số hạng bậc thấp phụ thuộc vào ngôn ngữ lập trình.
  • C. Vì chúng không ảnh hưởng đến tổng thời gian thực hiện.
  • D. Vì chúng chỉ quan trọng đối với kích thước đầu vào nhỏ.

Câu 11: Sắp xếp các độ phức tạp thời gian sau theo thứ tự từ tốt nhất (nhanh nhất) đến tệ nhất (chậm nhất) khi n rất lớn: O(n^2), O(n), O(log n), O(1), O(n log n).

  • A. O(n^2), O(n log n), O(n), O(log n), O(1)
  • B. O(1), O(log n), O(n), O(n log n), O(n^2)
  • C. O(1), O(n), O(log n), O(n log n), O(n^2)
  • D. O(log n), O(1), O(n), O(n log n), O(n^2)

Câu 12: Một thuật toán có độ phức tạp thời gian O(n log n). Điều này có nghĩa là gì?

  • A. Thời gian thực hiện tăng gấp đôi khi kích thước đầu vào tăng gấp đôi.
  • B. Thời gian thực hiện không phụ thuộc vào kích thước đầu vào.
  • C. Thời gian thực hiện tăng nhanh hơn tuyến tính nhưng chậm hơn bình phương khi kích thước đầu vào tăng.
  • D. Thời gian thực hiện tăng theo hàm mũ của kích thước đầu vào.

Câu 13: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
sum = 0
for i from 1 to 100:
sum = sum + i
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(1)
  • B. O(n)
  • C. O(100)
  • D. O(log n)

Câu 14: Tại sao việc đánh giá độ phức tạp thời gian (thường là trường hợp xấu nhất) lại quan trọng đối với lập trình viên?

  • A. Để biết chính xác thời gian chạy trên mọi máy tính.
  • B. Để dự đoán hiệu suất của thuật toán khi xử lý dữ liệu lớn và so sánh các thuật toán khác nhau.
  • C. Để xác định thuật toán nào tiêu tốn ít bộ nhớ nhất.
  • D. Để tìm ra lỗi cú pháp trong mã nguồn.

Câu 15: Một thuật toán có độ phức tạp thời gian O(2^n). Kiểu độ phức tạp này thường xuất hiện trong các bài toán nào?

  • A. Các bài toán tìm kiếm trên mảng.
  • B. Các bài toán sắp xếp hiệu quả.
  • C. Các bài toán xử lý dữ liệu lớn theo luồng.
  • D. Các bài toán vét cạn (brute force) hoặc đệ quy theo kiểu sinh cây nhị phân.

Câu 16: Xét đoạn mã giả sau:
```
for i from 1 to n:
# Lệnh đơn
for j from 1 to n*n:
# Lệnh đơn
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(n) + O(n^2)
  • C. O(n^2)
  • D. O(n^3)

Câu 17: Xét đoạn mã giả sau:
```
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n/2)
  • D. O(1)

Câu 18: Tại sao O(n) lại được xem là hiệu quả hơn O(n^2) khi n rất lớn?

  • A. Vì tốc độ tăng trưởng của n chậm hơn nhiều so với n^2 khi n tăng.
  • B. Vì O(n) sử dụng ít bộ nhớ hơn O(n^2).
  • C. Vì O(n^2) chỉ áp dụng cho các bài toán sắp xếp.
  • D. Vì O(n) có hệ số hằng số nhỏ hơn.

Câu 19: Cho một thuật toán có thời gian thực hiện được mô tả bằng hàm T(n) = 3n + 5. Độ phức tạp thời gian của thuật toán này là gì?

  • A. O(1)
  • B. O(3n)
  • C. O(n)
  • D. O(n+5)

Câu 20: Xét một hàm đệ quy đơn giản gọi chính nó một lần với đầu vào giảm đi 1, ví dụ `f(n) = f(n-1) + 1` với điều kiện dừng khi n=0. Độ phức tạp thời gian của hàm này (nếu mỗi bước tính toán là O(1)) là gì?

  • A. O(log n)
  • B. O(n log n)
  • C. O(n^2)
  • D. O(n)

Câu 21: Khi so sánh hai thuật toán A (độ phức tạp O(n log n)) và B (độ phức tạp O(n^2)) trên dữ liệu có kích thước n rất lớn, thuật toán nào thường được ưu tiên?

  • A. Thuật toán A, vì O(n log n) tăng chậm hơn O(n^2).
  • B. Thuật toán B, vì O(n^2) thường dễ cài đặt hơn.
  • C. Cả hai thuật toán có hiệu suất tương đương.
  • D. Không thể xác định nếu không biết hệ số hằng số.

Câu 22: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
for i from 1 to n:
for j from i to n:
print(i, j)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^2)
  • D. O(n^3)

Câu 23: Thuật toán sắp xếp nổi bọt (Bubble Sort) đơn giản nhất có độ phức tạp thời gian trong trường hợp xấu nhất và trung bình là bao nhiêu?

  • A. O(n)
  • B. O(n^2)
  • C. O(n log n)
  • D. O(log n)

Câu 24: Độ phức tạp thời gian O(1) có nghĩa là gì?

  • A. Thời gian thực hiện là hằng số, không phụ thuộc vào kích thước đầu vào n.
  • B. Thời gian thực hiện tăng tuyến tính theo n.
  • C. Thời gian thực hiện rất nhanh.
  • D. Thời gian thực hiện chỉ gồm 1 phép toán.

Câu 25: Khi phân tích một đoạn mã chứa lời gọi đến một hàm khác, làm thế nào để xác định độ phức tạp thời gian của đoạn mã đó?

  • A. Luôn xem lời gọi hàm là O(1).
  • B. Bỏ qua lời gọi hàm vì nó là một đơn vị riêng biệt.
  • C. Chỉ xem xét độ phức tạp của các lệnh bên ngoài hàm.
  • D. Phân tích độ phức tạp của hàm được gọi và kết hợp nó với độ phức tạp của đoạn mã gọi (dùng quy tắc cộng hoặc nhân tùy cấu trúc).

Câu 26: Xét đoạn mã giả sau:
```
if condition:
for i from 1 to n:
print(i)
else:
for i from 1 to 100:
print(i)
```
Độ phức tạp thời gian của đoạn mã này trong trường hợp xấu nhất là bao nhiêu?

  • A. O(100)
  • B. O(n)
  • C. O(n + 100)
  • D. O(n^2)

Câu 27: Tại sao việc ước lượng độ phức tạp thời gian theo trường hợp xấu nhất (worst-case) lại phổ biến trong lý thuyết khoa học máy tính?

  • A. Vì nó là trường hợp dễ phân tích nhất.
  • B. Vì nó luôn phản ánh đúng hiệu suất thực tế.
  • C. Vì nó cung cấp một đảm bảo về giới hạn trên của thời gian thực hiện, giúp dự đoán hiệu suất đáng tin cậy.
  • D. Vì hầu hết các thuật toán đều đạt đến trường hợp xấu nhất khi chạy.

Câu 28: Một thuật toán xử lý từng cặp phần tử trong một tập hợp n phần tử (ví dụ: so sánh mọi cặp). Độ phức tạp thời gian của thuật toán này có thể là bao nhiêu?

  • A. O(n)
  • B. O(n log n)
  • C. O(log n)
  • D. O(n^2)

Câu 29: Xét đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 10:
print(i, j)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

  • A. O(10n)
  • B. O(n)
  • C. O(n^2)
  • D. O(10)

Câu 30: Trong các độ phức tạp sau, độ phức tạp nào cho thấy hiệu suất của thuật toán kém nhất khi n rất lớn?

  • A. O(n log n)
  • B. O(n^2)
  • C. O(2^n)
  • D. O(n!)

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 1: Khi đánh giá độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến đại lượng nào để thể hiện kích thước của bài toán?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 2: Ký hiệu O lớn (Big O notation) được sử dụng để làm gì trong phân tích độ phức tạp thời gian thuật toán?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 3: Xét đoạn mã giả sau:
```
a = b + 5
print(a)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 4: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
for i from 1 to n:
print(i)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 5: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
for i from 1 to n:
for j from 1 to n:
print(i * j)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 6: Một thuật toán tìm kiếm trên một mảng đã sắp xếp bằng cách liên tục chia đôi phạm vi tìm kiếm. Độ phức tạp thời gian điển hình của thuật toán này (tìm kiếm nhị phân) là bao nhiêu trong trường hợp xấu nhất?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 7: Quy tắc cộng trong phân tích độ phức tạp thời gian được áp dụng khi nào?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 8: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi nào?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 9: Cho hàm thời gian thực hiện của một thuật toán là T(n) = 5n^3 + 2n^2 + 100. Độ phức tạp thời gian của thuật toán này theo ký hiệu O lớn là gì?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 10: Tại sao khi sử dụng ký hiệu O lớn, chúng ta bỏ qua các hệ số hằng số và các số hạng bậc thấp?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 11: Sắp xếp các độ phức tạp thời gian sau theo thứ tự từ tốt nhất (nhanh nhất) đến tệ nhất (chậm nhất) khi n rất lớn: O(n^2), O(n), O(log n), O(1), O(n log n).

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 12: Một thuật toán có độ phức tạp thời gian O(n log n). Điều này có nghĩa là gì?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 13: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
sum = 0
for i from 1 to 100:
sum = sum + i
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 14: Tại sao việc đánh giá độ phức tạp thời gian (thường là trường hợp xấu nhất) lại quan trọng đối với lập trình viên?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 15: Một thuật toán có độ phức tạp thời gian O(2^n). Kiểu độ phức tạp này thường xuất hiện trong các bài toán nào?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 16: Xét đoạn mã giả sau:
```
for i from 1 to n:
# Lệnh đơn
for j from 1 to n*n:
# Lệnh đơn
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 17: Xét đoạn mã giả sau:
```
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 18: Tại sao O(n) lại được xem là hiệu quả hơn O(n^2) khi n rất lớn?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 19: Cho một thuật toán có thời gian thực hiện được mô tả bằng hàm T(n) = 3n + 5. Độ phức tạp thời gian của thuật toán này là gì?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 20: Xét một hàm đệ quy đơn giản gọi chính nó một lần với đầu vào giảm đi 1, ví dụ `f(n) = f(n-1) + 1` với điều kiện dừng khi n=0. Độ phức tạp thời gian của hàm này (nếu mỗi bước tính toán là O(1)) là gì?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 21: Khi so sánh hai thuật toán A (độ phức tạp O(n log n)) và B (độ phức tạp O(n^2)) trên dữ liệu có kích thước n rất lớn, thuật toán nào thường được ưu tiên?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 22: Xét đoạn mã giả sau, với n là kích thước dữ liệu đầu vào:
```
for i from 1 to n:
for j from i to n:
print(i, j)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 23: Thuật toán sắp xếp nổi bọt (Bubble Sort) đơn giản nhất có độ phức tạp thời gian trong trường hợp xấu nhất và trung bình là bao nhiêu?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 24: Độ phức tạp thời gian O(1) có nghĩa là gì?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 25: Khi phân tích một đoạn mã chứa lời gọi đến một hàm khác, làm thế nào để xác định độ phức tạp thời gian của đoạn mã đó?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 26: Xét đoạn mã giả sau:
```
if condition:
for i from 1 to n:
print(i)
else:
for i from 1 to 100:
print(i)
```
Độ phức tạp thời gian của đoạn mã này trong trường hợp xấu nhất là bao nhiêu?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 27: Tại sao việc ước lượng độ phức tạp thời gian theo trường hợp xấu nhất (worst-case) lại phổ biến trong lý thuyết khoa học máy tính?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 28: Một thuật toán xử lý từng cặp phần tử trong một tập hợp n phần tử (ví dụ: so sánh mọi cặp). Độ phức tạp thời gian của thuật toán này có thể là bao nhiêu?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 29: Xét đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 10:
print(i, j)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 30: Trong các độ phức tạp sau, độ phức tạp nào cho thấy hiệu suất của thuật toán *kém nhất* khi n rất lớn?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 09

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 09 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Tại sao việc đánh giá độ phức tạp thời gian của thuật toán lại quan trọng trong lập trình, đặc biệt khi xử lý dữ liệu lớn?

  • A. Chỉ để so sánh các thuật toán trên lý thuyết.
  • B. Để biết chính xác thời gian chạy trên một máy tính cụ thể.
  • C. Để làm cho mã nguồn ngắn gọn hơn.
  • D. Để dự đoán hiệu năng của thuật toán khi kích thước dữ liệu đầu vào tăng lên.

Câu 2: Ký hiệu Big O (ví dụ: O(n)) trong phân tích độ phức tạp thời gian biểu thị điều gì về thời gian chạy của thuật toán?

  • A. Giới hạn trên (tốc độ tăng trưởng tối đa) của thời gian chạy khi kích thước đầu vào rất lớn.
  • B. Thời gian chạy chính xác của thuật toán.
  • C. Giới hạn dưới (thời gian chạy tối thiểu) của thuật toán.
  • D. Thời gian chạy trung bình của thuật toán.

Câu 3: Xem xét đoạn mã giả sau: `print("Hello"); a = 5 + 3; b = a * 2;`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(1)
  • B. O(n)
  • C. O(log n)
  • D. O(n^2)

Câu 4: Đoạn mã giả sau tính tổng các phần tử trong một danh sách có kích thước n: `tong = 0; for i from 0 to n-1: tong = tong + danh_sach[i];`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(1)
  • B. O(n)
  • C. O(n log n)
  • D. O(n^2)

Câu 5: Đoạn mã giả sau thực hiện sắp xếp nổi bọt (Bubble Sort) trên một danh sách có kích thước n: `for i from 0 to n-2: for j from 0 to n-i-2: if danh_sach[j] > danh_sach[j+1]: swap(danh_sach[j], danh_sach[j+1]);`. Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(log n)
  • D. O(n^2)

Câu 6: Thuật toán tìm kiếm nhị phân (Binary Search) trên một danh sách đã được sắp xếp với n phần tử có độ phức tạp thời gian là O(log n). Điều này có nghĩa là gì?

  • A. Thời gian tìm kiếm tăng tuyến tính với n.
  • B. Thời gian tìm kiếm không phụ thuộc vào n.
  • C. Thời gian tìm kiếm tăng rất chậm khi n tăng lên, thường liên quan đến số lần chia đôi danh sách.
  • D. Thời gian tìm kiếm tăng theo bình phương của n.

Câu 7: Các thuật toán sắp xếp hiệu quả như Merge Sort hoặc Quick Sort thường có độ phức tạp thời gian là O(n log n). So với O(n^2), O(n log n) có ưu điểm gì khi n rất lớn?

  • A. Tốc độ tăng trưởng thời gian nhanh hơn.
  • B. Tốc độ tăng trưởng thời gian chậm hơn đáng kể.
  • C. Sử dụng ít bộ nhớ hơn.
  • D. Dễ cài đặt hơn.

Câu 8: Nếu một chương trình bao gồm hai phần chạy nối tiếp nhau: Phần A có độ phức tạp O(n) và Phần B có độ phức tạp O(n^2). Độ phức tạp thời gian tổng thể của chương trình này là gì theo quy tắc cộng?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^3)
  • D. O(n^2)

Câu 9: Nếu một vòng lặp chạy n lần và bên trong vòng lặp đó gọi một hàm mất thời gian O(log n) cho mỗi lần gọi. Độ phức tạp thời gian tổng thể của đoạn mã này là gì theo quy tắc nhân?

  • A. O(n + log n)
  • B. O(max(n, log n))
  • C. O(n log n)
  • D. O(n^2 log n)

Câu 10: Khi so sánh các độ phức tạp thời gian O(n) và O(n^2) cho cùng một bài toán, phát biểu nào sau đây là đúng khi kích thước đầu vào n trở nên rất lớn?

  • A. Thuật toán O(n) sẽ chạy nhanh hơn đáng kể so với thuật toán O(n^2).
  • B. Thuật toán O(n^2) sẽ chạy nhanh hơn đáng kể so với thuật toán O(n).
  • C. Hai thuật toán sẽ có thời gian chạy tương đương nhau.
  • D. Không thể so sánh hiệu suất chỉ dựa vào ký hiệu Big O.

Câu 11: Xem xét đoạn mã giả sau: `for i from 0 to n-1: print(i); for j from 0 to n-1: print(j);`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n^2)
  • B. O(log n)
  • C. O(n)
  • D. O(1)

Câu 12: Xem xét đoạn mã giả sau: `for i from 0 to n-1: for j from 0 to i: print(i, j);`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(log n)
  • D. O(n^2)

Câu 13: Trong phân tích độ phức tạp thời gian, tại sao chúng ta thường chỉ quan tâm đến hạng tử có bậc cao nhất và bỏ qua các hệ số hằng số?

  • A. Vì các hạng tử bậc thấp và hằng số không ảnh hưởng đến thời gian chạy.
  • B. Vì khi n rất lớn, hạng tử bậc cao nhất sẽ chi phối tốc độ tăng trưởng của thời gian chạy.
  • C. Để làm cho việc tính toán độ phức tạp đơn giản hơn.
  • D. Vì chúng ta chỉ quan tâm đến trường hợp tốt nhất.

Câu 14: Thuật toán nào sau đây có độ phức tạp thời gian tốt nhất (hiệu quả nhất) khi n rất lớn?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(n^2)

Câu 15: Nếu một thuật toán có độ phức tạp O(n) và mất 5 giây để xử lý dữ liệu có kích thước n = 1000. Ước lượng thời gian cần thiết để xử lý dữ liệu có kích thước n = 2000 là bao nhiêu?

  • A. 5 giây
  • B. 10 giây
  • C. Khoảng 10 giây
  • D. Khoảng 20 giây

Câu 16: Nếu một thuật toán có độ phức tạp O(n^2) và mất 2 giây để xử lý dữ liệu có kích thước n = 100. Ước lượng thời gian cần thiết để xử lý dữ liệu có kích thước n = 200 là bao nhiêu?

  • A. 4 giây
  • B. 8 giây
  • C. Khoảng 4 giây
  • D. Khoảng 8 giây

Câu 17: Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (Linear Search) trên một danh sách n phần tử (trong trường hợp xấu nhất) là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(n^2)

Câu 18: Xem xét đoạn mã giả sau: `i = n; while i > 1: print(i); i = i / 2;`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(sqrt(n))

Câu 19: Thuật toán có độ phức tạp thời gian O(2^n) được gọi là thuật toán có độ phức tạp gì?

  • A. Đa thức
  • B. Logarit
  • C. Mũ (Exponential)
  • D. Tuyến tính

Câu 20: Đối với một kích thước đầu vào n đủ lớn, thứ tự hiệu quả từ TỐT NHẤT đến KÉM NHẤT của các độ phức tạp sau là gì: O(n log n), O(n^2), O(n), O(log n)?

  • A. O(n^2), O(n log n), O(n), O(log n)
  • B. O(log n), O(n), O(n log n), O(n^2)
  • C. O(n), O(log n), O(n log n), O(n^2)
  • D. O(log n), O(n log n), O(n), O(n^2)

Câu 21: Khi phân tích độ phức tạp thời gian, trường hợp nào thường được quan tâm nhất và tại sao?

  • A. Trường hợp xấu nhất, vì nó đảm bảo rằng thuật toán sẽ không bao giờ mất nhiều thời gian hơn mức ước lượng.
  • B. Trường hợp tốt nhất, vì nó cho biết hiệu suất tối đa có thể đạt được.
  • C. Trường hợp trung bình, vì nó phản ánh hiệu suất điển hình.
  • D. Cả ba trường hợp đều quan trọng như nhau.

Câu 22: Xem xét đoạn mã giả sau: `for i from 0 to n-1: print(i); for j from 0 to n*n-1: print(j);`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n + n^2)
  • D. O(n^2)

Câu 23: Một thuật toán xử lý mỗi cặp phần tử trong một tập hợp n phần tử. Ví dụ, so sánh mọi phần tử với mọi phần tử khác. Độ phức tạp thời gian điển hình của thuật toán này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n^2)
  • D. O(2^n)

Câu 24: Nếu một thuật toán có độ phức tạp O(log n) và mất 0.1 giây để xử lý dữ liệu có kích thước n = 1024. Ước lượng thời gian cần thiết để xử lý dữ liệu có kích thước n = 4096 là bao nhiêu? (Lưu ý: log₂1024 = 10, log₂4096 = 12)

  • A. 0.2 giây
  • B. Khoảng 0.12 giây
  • C. 0.4 giây
  • D. Khoảng 0.1 giây

Câu 25: Xem xét đoạn mã giả sau: `for i from 0 to n-1: for j from 0 to 10: print(i, j);`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n^2)
  • B. O(n)
  • C. O(10n)
  • D. O(log n)

Câu 26: Thuật toán có độ phức tạp O(n!) là cực kỳ kém hiệu quả. Bài toán điển hình nào có thể dẫn đến độ phức tạp này nếu giải bằng phương pháp vét cạn?

  • A. Bài toán người du lịch (Traveling Salesperson Problem) khi tìm tất cả các hoán vị đường đi.
  • B. Tìm kiếm một phần tử trong danh sách đã sắp xếp.
  • C. Tính tổng các phần tử trong mảng.
  • D. Sắp xếp danh sách bằng Merge Sort.

Câu 27: Khi phân tích độ phức tạp thời gian của một thuật toán đệ quy, yếu tố chính nào thường quyết định đến Big O của nó?

  • A. Số lượng dòng code trong hàm đệ quy.
  • B. Tên của hàm đệ quy.
  • C. Kiểu dữ liệu trả về của hàm.
  • D. Số lượng lời gọi đệ quy và chi phí xử lý tại mỗi cấp đệ quy.

Câu 28: Một thuật toán duyệt qua tất cả các tập con có thể có của một tập hợp n phần tử. Độ phức tạp thời gian điển hình của thuật toán này là gì?

  • A. O(n)
  • B. O(n^2)
  • C. O(2^n)
  • D. O(n log n)

Câu 29: Xem xét đoạn mã giả sau: `tong = 0; for i from 0 to n-1: tong = tong + i; for j from 0 to n-1: for k from 0 to n-1: print(j, k);`. Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n + n^2)
  • D. O(n^2)

Câu 30: Điều gì xảy ra với hiệu năng của một thuật toán có độ phức tạp O(2^n) khi kích thước đầu vào n tăng chỉ một lượng nhỏ (ví dụ từ n=20 lên n=21)?

  • A. Thời gian chạy tăng lên gấp đôi.
  • B. Thời gian chạy tăng lên một lượng nhỏ.
  • C. Thời gian chạy tăng lên theo bình phương.
  • D. Thời gian chạy tăng lên theo logarit.

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 1: Tại sao việc đánh giá độ phức tạp thời gian của thuật toán lại quan trọng trong lập trình, đặc biệt khi xử lý dữ liệu lớn?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 2: Ký hiệu Big O (ví dụ: O(n)) trong phân tích độ phức tạp thời gian biểu thị điều gì về thời gian chạy của thuật toán?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 3: Xem xét đoạn mã giả sau: `print('Hello'); a = 5 + 3; b = a * 2;`. Độ phức tạp thời gian của đoạn mã này là gì?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 4: Đoạn mã giả sau tính tổng các phần tử trong một danh sách có kích thước n: `tong = 0; for i from 0 to n-1: tong = tong + danh_sach[i];`. Độ phức tạp thời gian của đoạn mã này là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 5: Đoạn mã giả sau thực hiện sắp xếp nổi bọt (Bubble Sort) trên một danh sách có kích thước n: `for i from 0 to n-2: for j from 0 to n-i-2: if danh_sach[j] > danh_sach[j+1]: swap(danh_sach[j], danh_sach[j+1]);`. Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán này là gì?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 6: Thuật toán tìm kiếm nhị phân (Binary Search) trên một danh sách đã được sắp xếp với n phần tử có độ phức tạp thời gian là O(log n). Điều này có nghĩa là gì?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 7: Các thuật toán sắp xếp hiệu quả như Merge Sort hoặc Quick Sort thường có độ phức tạp thời gian là O(n log n). So với O(n^2), O(n log n) có ưu điểm gì khi n rất lớn?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 8: Nếu một chương trình bao gồm hai phần chạy nối tiếp nhau: Phần A có độ phức tạp O(n) và Phần B có độ phức tạp O(n^2). Độ phức tạp thời gian tổng thể của chương trình này là gì theo quy tắc cộng?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 9: Nếu một vòng lặp chạy n lần và bên trong vòng lặp đó gọi một hàm mất thời gian O(log n) cho mỗi lần gọi. Độ phức tạp thời gian tổng thể của đoạn mã này là gì theo quy tắc nhân?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 10: Khi so sánh các độ phức tạp thời gian O(n) và O(n^2) cho cùng một bài toán, phát biểu nào sau đây là đúng khi kích thước đầu vào n trở nên rất lớn?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 11: Xem xét đoạn mã giả sau: `for i from 0 to n-1: print(i); for j from 0 to n-1: print(j);`. Độ phức tạp thời gian của đoạn mã này là gì?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 12: Xem xét đoạn mã giả sau: `for i from 0 to n-1: for j from 0 to i: print(i, j);`. Độ phức tạp thời gian của đoạn mã này là gì?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 13: Trong phân tích độ phức tạp thời gian, tại sao chúng ta thường chỉ quan tâm đến hạng tử có bậc cao nhất và bỏ qua các hệ số hằng số?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 14: Thuật toán nào sau đây có độ phức tạp thời gian tốt nhất (hiệu quả nhất) khi n rất lớn?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 15: Nếu một thuật toán có độ phức tạp O(n) và mất 5 giây để xử lý dữ liệu có kích thước n = 1000. Ước lượng thời gian cần thiết để xử lý dữ liệu có kích thước n = 2000 là bao nhiêu?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 16: Nếu một thuật toán có độ phức tạp O(n^2) và mất 2 giây để xử lý dữ liệu có kích thước n = 100. Ước lượng thời gian cần thiết để xử lý dữ liệu có kích thước n = 200 là bao nhiêu?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 17: Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (Linear Search) trên một danh sách n phần tử (trong trường hợp xấu nhất) là gì?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 18: Xem xét đoạn mã giả sau: `i = n; while i > 1: print(i); i = i / 2;`. Độ phức tạp thời gian của đoạn mã này là gì?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 19: Thuật toán có độ phức tạp thời gian O(2^n) được gọi là thuật toán có độ phức tạp gì?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 20: Đối với một kích thước đầu vào n đủ lớn, thứ tự hiệu quả từ TỐT NHẤT đến KÉM NHẤT của các độ phức tạp sau là gì: O(n log n), O(n^2), O(n), O(log n)?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 21: Khi phân tích độ phức tạp thời gian, trường hợp nào thường được quan tâm nhất và tại sao?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 22: Xem xét đoạn mã giả sau: `for i from 0 to n-1: print(i); for j from 0 to n*n-1: print(j);`. Độ phức tạp thời gian của đoạn mã này là gì?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 23: Một thuật toán xử lý mỗi cặp phần tử trong một tập hợp n phần tử. Ví dụ, so sánh mọi phần tử với mọi phần tử khác. Độ phức tạp thời gian điển hình của thuật toán này là gì?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 24: Nếu một thuật toán có độ phức tạp O(log n) và mất 0.1 giây để xử lý dữ liệu có kích thước n = 1024. Ước lượng thời gian cần thiết để xử lý dữ liệu có kích thước n = 4096 là bao nhiêu? (Lưu ý: log₂1024 = 10, log₂4096 = 12)

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 25: Xem xét đoạn mã giả sau: `for i from 0 to n-1: for j from 0 to 10: print(i, j);`. Độ phức tạp thời gian của đoạn mã này là gì?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 26: Thuật toán có độ phức tạp O(n!) là cực kỳ kém hiệu quả. Bài toán điển hình nào có thể dẫn đến độ phức tạp này nếu giải bằng phương pháp vét cạn?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 27: Khi phân tích độ phức tạp thời gian của một thuật toán đệ quy, yếu tố chính nào thường quyết định đến Big O của nó?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 28: Một thuật toán duyệt qua tất cả các tập con có thể có của một tập hợp n phần tử. Độ phức tạp thời gian điển hình của thuật toán này là gì?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 29: Xem xét đoạn mã giả sau: `tong = 0; for i from 0 to n-1: tong = tong + i; for j from 0 to n-1: for k from 0 to n-1: print(j, k);`. Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 30: Điều gì xảy ra với hiệu năng của một thuật toán có độ phức tạp O(2^n) khi kích thước đầu vào n tăng chỉ một lượng nhỏ (ví dụ từ n=20 lên n=21)?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 10

Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán - Đề 10 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!

Câu 1: Mục đích chính của việc đánh giá độ phức tạp thời gian của một thuật toán là gì?

  • A. Để biết thuật toán chạy mất bao nhiêu giây trên một máy tính cụ thể.
  • B. Để xác định số dòng code cần thiết cho thuật toán.
  • C. Để ước lượng tốc độ tăng trưởng thời gian chạy của thuật toán khi kích thước đầu vào tăng lên.
  • D. Để kiểm tra xem thuật toán có chạy đúng với mọi trường hợp hay không.

Câu 2: Ký hiệu O lớn (Big O notation) O(g(n)) trong phân tích độ phức tạp thời gian của thuật toán thường được dùng để biểu thị điều gì?

  • A. Giới hạn trên (upper bound) tiệm cận của thời gian chạy khi kích thước đầu vào n đủ lớn.
  • B. Thời gian chạy chính xác của thuật toán với mọi kích thước đầu vào n.
  • C. Giới hạn dưới (lower bound) tiệm cận của thời gian chạy.
  • D. Thời gian chạy trung bình của thuật toán.

Câu 3: Giả sử một chương trình gồm hai phần thực hiện nối tiếp nhau. Phần thứ nhất có độ phức tạp O(n), phần thứ hai có độ phức tạp O(n²). Theo quy tắc cộng, độ phức tạp thời gian tổng thể của chương trình này là bao nhiêu?

  • A. O(n)
  • B. O(n log n)
  • C. O(n³)
  • D. O(n²)

Câu 4: Một vòng lặp `for` chạy từ 1 đến n, và mỗi lần lặp thực hiện một số lượng thao tác cố định (không phụ thuộc vào n). Độ phức tạp thời gian của vòng lặp này là gì?

  • A. O(1)
  • B. O(n)
  • C. O(log n)
  • D. O(n²)

Câu 5: Xét đoạn mã giả sau: `for i from 1 to n: for j from 1 to m: perform_constant_operation()` (với n và m là kích thước đầu vào). Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n * m)
  • B. O(n + m)
  • C. O(max(n, m))
  • D. O(n²)

Câu 6: Khi tính độ phức tạp thời gian O lớn, chúng ta thường bỏ qua các hằng số nhân và các số hạng bậc thấp. Ví dụ, nếu thời gian chạy thực tế là T(n) = 3n² + 5n + 10, thì độ phức tạp O lớn là gì?

  • A. O(3n²)
  • B. O(n² + n)
  • C. O(n²)
  • D. O(1)

Câu 7: Thuật toán có độ phức tạp thời gian O(1) nghĩa là gì?

  • A. Thời gian chạy tăng tuyến tính với kích thước đầu vào.
  • B. Thời gian chạy là một hằng số và không phụ thuộc vào kích thước đầu vào (khi n đủ lớn).
  • C. Thời gian chạy tăng theo hàm logarit của kích thước đầu vào.
  • D. Thời gian chạy tăng theo bình phương của kích thước đầu vào.

Câu 8: Thuật toán tìm kiếm tuyến tính trên một mảng n phần tử (duyệt qua từng phần tử để tìm) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n²)
  • D. O(1)

Câu 9: Thuật toán sắp xếp chọn (Selection Sort) trên một mảng n phần tử có độ phức tạp thời gian là O(n²). Điều này có ý nghĩa gì khi so sánh với thuật toán có độ phức tạp O(n log n)?

  • A. Sắp xếp chọn luôn nhanh hơn O(n log n) với mọi n.
  • B. Với n đủ lớn, O(n log n) sẽ chạy chậm hơn sắp xếp chọn.
  • C. Độ phức tạp O(n²) không ảnh hưởng đến hiệu suất thực tế.
  • D. Với n đủ lớn, sắp xếp chọn (O(n²)) sẽ chạy chậm hơn đáng kể so với thuật toán O(n log n).

Câu 10: Thuật toán tìm kiếm nhị phân trên một mảng đã sắp xếp n phần tử có độ phức tạp thời gian là bao nhiêu?

  • A. O(n)
  • B. O(log n)
  • C. O(n²)
  • D. O(n log n)

Câu 11: So sánh tốc độ tăng trưởng của O(n) và O(n²). Với giá trị n rất lớn, thuật toán có độ phức tạp nào sẽ hiệu quả hơn?

  • A. O(n) hiệu quả hơn O(n²).
  • B. O(n²) hiệu quả hơn O(n).
  • C. Hai độ phức tạp này có hiệu quả tương đương với n lớn.
  • D. Không thể so sánh chỉ dựa vào ký hiệu O lớn.

Câu 12: Độ phức tạp thời gian O(n!) (giai thừa) thường xuất hiện trong các bài toán nào?

  • A. Các bài toán tìm kiếm trên mảng.
  • B. Các bài toán sắp xếp thông thường.
  • C. Các bài toán liên quan đến việc thử tất cả các hoán vị hoặc tổ hợp (ví dụ: bài toán người bán hàng - Brute Force).
  • D. Các bài toán đơn giản chỉ có các phép gán và tính toán cơ bản.

Câu 13: Xét đoạn mã giả sau: `sum = 0; for i from 1 to 100: sum = sum + i;`. Kích thước đầu vào n không ảnh hưởng đến số lần lặp của vòng lặp. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(1)
  • B. O(n)
  • C. O(log n)
  • D. O(100)

Câu 14: Xét đoạn mã giả sau: `for i from 1 to n: perform_operation_O_of_n();`. Giả sử `perform_operation_O_of_n()` là một hàm có độ phức tạp O(n). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n log n)
  • D. O(n²)

Câu 15: Khi phân tích độ phức tạp thời gian, tại sao chúng ta lại đếm số lượng các "thao tác cơ bản" thay vì đo thời gian chạy thực tế bằng đồng hồ?

  • A. Việc đếm thao tác cơ bản dễ thực hiện hơn.
  • B. Việc đếm thao tác cơ bản giúp đánh giá hiệu suất thuật toán một cách độc lập với tốc độ phần cứng và các yếu tố môi trường khác.
  • C. Việc đếm thao tác cơ bản cho kết quả chính xác hơn thời gian chạy thực tế.
  • D. Thời gian chạy thực tế không cung cấp thông tin hữu ích về thuật toán.

Câu 16: Xét đoạn mã giả sau: `if condition_is_true: block_A() else: block_B()`. Giả sử `block_A()` có độ phức tạp O(n²) và `block_B()` có độ phức tạp O(n). Độ phức tạp thời gian của toàn bộ cấu trúc điều kiện này là gì trong trường hợp xấu nhất?

  • A. O(n)
  • B. O(n³)
  • C. O(n²)
  • D. O(n + n²)

Câu 17: Độ phức tạp O(log n) thường xuất hiện trong các thuật toán sử dụng kỹ thuật nào?

  • A. Chia để trị (Divide and Conquer) làm giảm phạm vi tìm kiếm/xử lý theo cấp số nhân (ví dụ: tìm kiếm nhị phân).
  • B. Duyệt qua tất cả các cặp phần tử.
  • C. Truy cập trực tiếp vào một phần tử bằng chỉ số.
  • D. Lặp qua toàn bộ danh sách một lần.

Câu 18: Xét đoạn mã giả sau: `i = 1; while i < n: print(i); i = i * 2;`. Độ phức tạp thời gian của vòng lặp này là gì?

  • A. O(n)
  • B. O(log n)
  • C. O(n²)
  • D. O(1)

Câu 19: Thuật toán có độ phức tạp thời gian nào sau đây được coi là kém hiệu quả nhất khi xử lý dữ liệu có kích thước n rất lớn?

  • A. O(n log n)
  • B. O(n²)
  • C. O(n³)
  • D. O(2^n)

Câu 20: Trong phân tích độ phức tạp O lớn, "trường hợp xấu nhất" (worst-case) thường được tập trung phân tích vì lý do gì?

  • A. Trường hợp xấu nhất luôn xảy ra thường xuyên nhất.
  • B. Trường hợp xấu nhất dễ phân tích nhất.
  • C. Trường hợp xấu nhất cung cấp giới hạn trên về hiệu suất, đảm bảo rằng thuật toán sẽ không bao giờ chạy chậm hơn mức đó.
  • D. Trường hợp xấu nhất là trường hợp duy nhất có thể phân tích bằng O lớn.

Câu 21: Xét đoạn mã giả sau: `for i from 1 to n: for j from i to n: perform_constant_operation()`. Độ phức tạp thời gian của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(m * n) nếu m=n
  • D. O(n²)

Câu 22: Thuật toán sắp xếp trộn (Merge Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

  • A. O(n²)
  • B. O(n)
  • C. O(n log n)
  • D. O(log n)

Câu 23: Phát biểu nào sau đây là đúng khi so sánh các độ phức tạp thời gian cho giá trị n đủ lớn?

  • A. O(log n) < O(n) < O(n log n) < O(n²) < O(2^n)
  • B. O(n²) < O(n log n) < O(n) < O(log n) < O(2^n)
  • C. O(2^n) < O(n²) < O(n log n) < O(n) < O(log n)
  • D. O(log n) < O(n log n) < O(n) < O(n²) < O(2^n)

Câu 24: Một thuật toán có độ phức tạp thời gian O(n³). Nếu kích thước đầu vào n tăng gấp đôi, thời gian chạy của thuật toán sẽ tăng lên khoảng bao nhiêu lần?

  • A. 2 lần
  • B. 4 lần
  • C. 6 lần
  • D. 8 lần

Câu 25: Độ phức tạp thời gian O(n log n) thường được coi là hiệu quả cho các bài toán sắp xếp trên tập dữ liệu lớn. Ví dụ nào sau đây có độ phức tạp O(n log n)?

  • A. Sắp xếp nổi bọt (Bubble Sort).
  • B. Sắp xếp nhanh (Quick Sort).
  • C. Sắp xếp chèn (Insertion Sort).
  • D. Sắp xếp chọn (Selection Sort).

Câu 26: Xét một thuật toán thực hiện lần lượt các bước sau: Bước 1: Tìm kiếm nhị phân (O(log n)). Bước 2: Duyệt qua mảng (O(n)). Bước 3: Sắp xếp chèn (O(n²)). Độ phức tạp thời gian tổng thể của thuật toán này là gì?

  • A. O(log n)
  • B. O(n)
  • C. O(n log n)
  • D. O(n²)

Câu 27: Xét đoạn mã giả sau: `for i from 1 to n: perform_operation_A(); perform_operation_B();`. Giả sử `perform_operation_A()` có độ phức tạp O(1) và `perform_operation_B()` có độ phức tạp O(n). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

  • A. O(n)
  • B. O(n log n)
  • C. O(n²)
  • D. O(1)

Câu 28: Đâu là yếu tố chính mà ký hiệu O lớn (Big O) tập trung vào khi đánh giá hiệu suất thuật toán?

  • A. Tốc độ tăng trưởng của thời gian chạy khi kích thước đầu vào rất lớn (hành vi tiệm cận).
  • B. Số lượng bộ nhớ mà thuật toán sử dụng.
  • C. Khả năng đọc hiểu của mã nguồn.
  • D. Thời gian chạy chính xác trên một máy tính cụ thể.

Câu 29: Thuật toán nhân hai số nguyên n chữ số bằng phương pháp thông thường có độ phức tạp O(n²). Thuật toán Karatsuba cải tiến có độ phức tạp xấp xỉ O(n^1.585). Điều này cho thấy điều gì?

  • A. Thuật toán Karatsuba chỉ hiệu quả với n nhỏ.
  • B. Với n đủ lớn, thuật toán Karatsuba sẽ nhanh hơn đáng kể so với phương pháp thông thường.
  • C. Sự khác biệt về độ phức tạp không đáng kể.
  • D. Độ phức tạp O(n^1.585) thực tế là O(n²).

Câu 30: Trong phân tích độ phức tạp, đâu là độ phức tạp thời gian tốt nhất có thể đạt được cho một thuật toán (trừ O(0) không có ý nghĩa)?

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n log n)

1 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 1: Mục đích chính của việc đánh giá độ phức tạp thời gian của một thuật toán là gì?

2 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 2: Ký hiệu O lớn (Big O notation) O(g(n)) trong phân tích độ phức tạp thời gian của thuật toán thường được dùng để biểu thị điều gì?

3 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 3: Giả sử một chương trình gồm hai phần thực hiện nối tiếp nhau. Phần thứ nhất có độ phức tạp O(n), phần thứ hai có độ phức tạp O(n²). Theo quy tắc cộng, độ phức tạp thời gian tổng thể của chương trình này là bao nhiêu?

4 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 4: Một vòng lặp `for` chạy từ 1 đến n, và mỗi lần lặp thực hiện một số lượng thao tác cố định (không phụ thuộc vào n). Độ phức tạp thời gian của vòng lặp này là gì?

5 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 5: Xét đoạn mã giả sau: `for i from 1 to n: for j from 1 to m: perform_constant_operation()` (với n và m là kích thước đầu vào). Độ phức tạp thời gian của đoạn mã này là gì?

6 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 6: Khi tính độ phức tạp thời gian O lớn, chúng ta thường bỏ qua các hằng số nhân và các số hạng bậc thấp. Ví dụ, nếu thời gian chạy thực tế là T(n) = 3n² + 5n + 10, thì độ phức tạp O lớn là gì?

7 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 7: Thuật toán có độ phức tạp thời gian O(1) nghĩa là gì?

8 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 8: Thuật toán tìm kiếm tuyến tính trên một mảng n phần tử (duyệt qua từng phần tử để tìm) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

9 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 9: Thuật toán sắp xếp chọn (Selection Sort) trên một mảng n phần tử có độ phức tạp thời gian là O(n²). Điều này có ý nghĩa gì khi so sánh với thuật toán có độ phức tạp O(n log n)?

10 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 10: Thuật toán tìm kiếm nhị phân trên một mảng đã sắp xếp n phần tử có độ phức tạp thời gian là bao nhiêu?

11 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 11: So sánh tốc độ tăng trưởng của O(n) và O(n²). Với giá trị n rất lớn, thuật toán có độ phức tạp nào sẽ hiệu quả hơn?

12 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 12: Độ phức tạp thời gian O(n!) (giai thừa) thường xuất hiện trong các bài toán nào?

13 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 13: Xét đoạn mã giả sau: `sum = 0; for i from 1 to 100: sum = sum + i;`. Kích thước đầu vào n không ảnh hưởng đến số lần lặp của vòng lặp. Độ phức tạp thời gian của đoạn mã này là gì?

14 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 14: Xét đoạn mã giả sau: `for i from 1 to n: perform_operation_O_of_n();`. Giả sử `perform_operation_O_of_n()` là một hàm có độ phức tạp O(n). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

15 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 15: Khi phân tích độ phức tạp thời gian, tại sao chúng ta lại đếm số lượng các 'thao tác cơ bản' thay vì đo thời gian chạy thực tế bằng đồng hồ?

16 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 16: Xét đoạn mã giả sau: `if condition_is_true: block_A() else: block_B()`. Giả sử `block_A()` có độ phức tạp O(n²) và `block_B()` có độ phức tạp O(n). Độ phức tạp thời gian của toàn bộ cấu trúc điều kiện này là gì trong trường hợp xấu nhất?

17 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 17: Độ phức tạp O(log n) thường xuất hiện trong các thuật toán sử dụng kỹ thuật nào?

18 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 18: Xét đoạn mã giả sau: `i = 1; while i < n: print(i); i = i * 2;`. Độ phức tạp thời gian của vòng lặp này là gì?

19 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 19: Thuật toán có độ phức tạp thời gian nào sau đây được coi là kém hiệu quả nhất khi xử lý dữ liệu có kích thước n rất lớn?

20 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 20: Trong phân tích độ phức tạp O lớn, 'trường hợp xấu nhất' (worst-case) thường được tập trung phân tích vì lý do gì?

21 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 21: Xét đoạn mã giả sau: `for i from 1 to n: for j from i to n: perform_constant_operation()`. Độ phức tạp thời gian của đoạn mã này là gì?

22 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 22: Thuật toán sắp xếp trộn (Merge Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

23 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 23: Phát biểu nào sau đây là đúng khi so sánh các độ phức tạp thời gian cho giá trị n đủ lớn?

24 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 24: Một thuật toán có độ phức tạp thời gian O(n³). Nếu kích thước đầu vào n tăng gấp đôi, thời gian chạy của thuật toán sẽ tăng lên khoảng bao nhiêu lần?

25 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 25: Độ phức tạp thời gian O(n log n) thường được coi là hiệu quả cho các bài toán sắp xếp trên tập dữ liệu lớn. Ví dụ nào sau đây có độ phức tạp O(n log n)?

26 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 26: Xét một thuật toán thực hiện lần lượt các bước sau: Bước 1: Tìm kiếm nhị phân (O(log n)). Bước 2: Duyệt qua mảng (O(n)). Bước 3: Sắp xếp chèn (O(n²)). Độ phức tạp thời gian tổng thể của thuật toán này là gì?

27 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 27: Xét đoạn mã giả sau: `for i from 1 to n: perform_operation_A(); perform_operation_B();`. Giả sử `perform_operation_A()` có độ phức tạp O(1) và `perform_operation_B()` có độ phức tạp O(n). Độ phức tạp thời gian tổng thể của đoạn mã này là gì?

28 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 28: Đâu là yếu tố chính mà ký hiệu O lớn (Big O) tập trung vào khi đánh giá hiệu suất thuật toán?

29 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 29: Thuật toán nhân hai số nguyên n chữ số bằng phương pháp thông thường có độ phức tạp O(n²). Thuật toán Karatsuba cải tiến có độ phức tạp xấp xỉ O(n^1.585). Điều này cho thấy điều gì?

30 / 30

Category: Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 30: Trong phân tích độ phức tạp, đâu là độ phức tạp thời gian tốt nhất có thể đạt được cho một thuật toán (trừ O(0) không có ý nghĩa)?

Viết một bình luận