15+ Đề Trắc nghiệm Tin học 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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Độ phức tạp thời gian nào sau đây thể hiện hiệu suất thuật toán tốt nhất khi kích thước đầu vào tăng lên?

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

Câu 2: Cho đ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(n^2)
  • B. O(n)
  • C. O(n log n)
  • D. O(10n)

Câu 3: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian khi các lệnh được thực hiện tuần tự (lệnh này sau lệnh khác)?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Quy tắc lũy thừa
  • D. Quy tắc logarit

Câu 4: Thuật toán tìm kiếm nhị phân 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 chạy tăng tuyến tính với kích thước đầu vào.
  • B. Thời gian chạy không đổi dù kích thước đầu vào tăng.
  • C. Thời gian chạy tăng chậm hơn so với kích thước đầu vào.
  • D. Thời gian chạy tăng theo lũy thừa của kích thước đầu vào.

Câu 5: Trong trường hợp nào, độ phức tạp thời gian O(1) là mong muốn nhất?

  • A. Khi cần thuật toán chạy nhanh nhất có thể, không phụ thuộc vào dữ liệu.
  • B. Khi kích thước dữ liệu đầu vào rất lớn.
  • C. Khi thuật toán cần xử lý dữ liệu tuần tự.
  • D. Khi bộ nhớ sử dụng cần được tối ưu.

Câu 6: Cho thuật toán sắp xếp nổi bọt (Bubble Sort). Trong trường hợp xấu nhất, độ phức tạp thời gian của thuật toán này là bao nhiêu?

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

Câu 7: Để tính độ phức tạp thời gian của một chương trình gồm hai vòng lặp lồng nhau, trong đó vòng ngoài chạy "n" lần và vòng trong chạy "m" lần, ta sử dụng quy tắc nào?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Quy tắc chia
  • D. Quy tắc trừ

Câu 8: Một thuật toán có độ phức tạp O(n log n). Nếu thời gian chạy của nó là 1 giây với n = 1000, thì thời gian chạy ước tính với n = 1000000 (gấp 1000 lần) sẽ là khoảng bao nhiêu?

  • A. 1 giây
  • B. 10 giây
  • C. Khoảng 1000 giây
  • D. Khoảng 1 triệu giây

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

  • A. Thuật toán tìm kiếm tuyến tính
  • B. Thuật toán sắp xếp trộn
  • C. Thuật toán tìm kiếm nhị phân
  • D. Thuật toán vét cạn

Câu 10: Trong 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 nhất?

  • A. Trường hợp tốt nhất
  • B. Trường hợp xấu nhất
  • C. Trường hợp trung bình
  • D. Trường hợp điển hình

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

```
if (n > 10):
for i from 1 to n:
print(i)
else:
print(

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

Câu 12: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi kích thước đầu vào "n" rất lớn?

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

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 trung bình là O(n log n)?

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

Câu 14: Điều gì KHÔNG phải là yếu tố ảnh hưởng đến độ phức tạp thời gian của thuật toán?

  • A. Kích thước dữ liệu đầu vào
  • B. Cấu trúc của thuật toán (vòng lặp, đệ quy)
  • C. Ngôn ngữ lập trình được sử dụng
  • D. Số lượng phép toán cơ bản

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

```
function tinh_tong(n):
if n == 0:
return 0
else:
return n + tinh_tong(n-1)
```

Độ phức tạp thời gian của hàm `tinh_tong(n)` là:

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

Câu 16: Để so sánh hiệu quả của hai thuật toán, một có độ phức tạp O(n) và một có độ phức tạp O(n^2), thuật toán nào sẽ hiệu quả hơn khi "n" lớn?

  • A. Thuật toán có độ phức tạp O(n)
  • B. Thuật toán có độ phức tạp O(n^2)
  • C. Cả hai thuật toán hiệu quả như nhau
  • D. Không thể so sánh nếu không biết giá trị cụ thể của n

Câu 17: Trong thuật toán tìm kiếm tuyến tính, độ phức tạp thời gian tốt nhất là bao nhiêu?

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

Câu 18: Độ phức tạp thời gian O(n^3) thường liên quan đến thuật toán nào?

  • A. Tìm kiếm phần tử lớn nhất trong mảng
  • B. Nhân hai ma trận vuông kích thước n x n
  • C. Sắp xếp một mảng số nguyên
  • D. Tìm kiếm nhị phân trong mảng đã sắp xếp

Câu 19: Khi phân tích độ phức tạp thời gian, hằng số (ví dụ: O(2n) được đơn giản hóa thành O(n)) thường bị bỏ qua. Tại sao?

  • A. Vì hằng số luôn rất nhỏ.
  • B. Vì hằng số chỉ ảnh hưởng đến trường hợp tốt nhất.
  • C. Vì hằng số không ảnh hưởng đến tốc độ tăng trưởng khi n đủ lớn.
  • D. Vì hằng số chỉ liên quan đến bộ nhớ, không phải thời gian.

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

```
for i from 1 to n:
j = 1
while j < n: j = j * 2 print(i, j) ``` Độ phức tạp thời gian của đoạn mã này là:

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

Câu 21: Trong thực tế, tại sao việc hiểu độ phức tạp thời gian của thuật toán lại quan trọng?

  • A. Để chọn thuật toán hiệu quả cho dữ liệu lớn và đảm bảo chương trình chạy nhanh.
  • B. Để viết mã nguồn ngắn gọn hơn.
  • C. Để tối ưu bộ nhớ sử dụng của chương trình.
  • D. Để chương trình dễ đọc và bảo trì hơn.

Câu 22: Độ phức tạp thời gian nào sau đây thể hiện tốc độ tăng trưởng thời gian chạy nhanh nhất khi "n" tăng?

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

Câu 23: Để tính độ phức tạp thời gian tổng thể của một chương trình gồm nhiều đoạn mã thực hiện tuần tự, ta chọn độ phức tạp nào?

  • A. Trung bình cộng của độ phức tạp các đoạn mã.
  • B. Độ phức tạp lớn nhất trong các đoạn mã.
  • C. Tổng độ phức tạp của tất cả các đoạn mã.
  • D. Tích độ phức tạp của tất cả các đoạn mã.

Câu 24: Một thuật toán có độ phức tạp O(log n). Nếu thời gian chạy là 0.1 giây với n = 100, thời gian chạy ước tính với n = 10000 (gấp 100 lần) sẽ là khoảng bao nhiêu?

  • A. 10 giây
  • B. Khoảng 0.2 giây
  • C. 1 giây
  • D. 0.1 giây (không đổi)

Câu 25: Độ phức tạp thời gian O(n!) thường gặp trong các bài toán nào?

  • A. Bài toán tìm kiếm trong danh bạ
  • B. Bài toán sắp xếp danh sách sinh viên
  • C. Bài toán liệt kê tất cả các hoán vị
  • D. Bài toán tìm đường đi ngắn nhất trên bản đồ

Câu 26: Trong các độ phức tạp sau: O(n), O(log n), O(n^2), O(1), sắp xếp theo thứ tự tăng dần về hiệu suất (từ tốt nhất đến kém nhất).

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

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

```
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à:

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

Câu 28: Khi nào thì độ phức tạp thời gian trung bình của thuật toán khác biệt đáng kể so với độ phức tạp thời gian trường hợp xấu nhất?

  • A. Khi thuật toán luôn chạy với thời gian không đổi.
  • B. Khi thuật toán không có vòng lặp.
  • C. Khi hiệu suất thuật toán phụ thuộc vào sự phân bố dữ liệu đầu vào.
  • D. Khi thuật toán sử dụng đệ quy.

Câu 29: Ký hiệu Big O dùng để mô tả điều gì về hiệu suất của thuật toán?

  • A. Thời gian chạy chính xác của thuật toán.
  • B. Bộ nhớ sử dụng chính xác của thuật toán.
  • C. Thời gian chạy trung bình của thuật toán.
  • D. Tốc độ tăng trưởng thời gian chạy khi kích thước đầu vào tăng.

Câu 30: Trong tình huống nào, việc tối ưu độ phức tạp thời gian của thuật toán trở nên đặc biệt quan trọng?

  • A. Khi xử lý lượng dữ liệu đầu vào rất lớn.
  • B. Khi viết chương trình nhỏ cho mục đích cá nhân.
  • C. Khi thuật toán chỉ chạy một vài lần.
  • D. Khi bộ nhớ sử dụng là yếu tố hạn chế duy nhất.

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ộ đề 1

Câu 1: Độ phức tạp thời gian nào sau đây thể hiện hiệu suất thuật toán tốt nhất khi kích thước đầu vào tăng 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ộ đề 1

Câu 2: Cho đ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?

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ộ đề 1

Câu 3: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian khi các lệnh được thực hiện tuần tự (lệnh này sau lệnh khác)?

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ộ đề 1

Câu 4: Thuật toán tìm kiếm nhị phân có độ phức tạp thời gian là O(log n). Điều này có 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ộ đề 1

Câu 5: Trong trường hợp nào, độ phức tạp thời gian O(1) là mong muốn nhất?

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ộ đề 1

Câu 6: Cho thuật toán sắp xếp nổi bọt (Bubble Sort). Trong trường hợp xấu nhất, độ phức tạp thời gian của thuật toán này là bao nhiêu?

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ộ đề 1

Câu 7: Để tính độ phức tạp thời gian của một chương trình gồm hai vòng lặp lồng nhau, trong đó vòng ngoài chạy 'n' lần và vòng trong chạy 'm' lần, ta sử dụng quy tắc 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ộ đề 1

Câu 8: Một thuật toán có độ phức tạp O(n log n). Nếu thời gian chạy của nó là 1 giây với n = 1000, thì thời gian chạy ước tính với n = 1000000 (gấp 1000 lần) sẽ là khoảng 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ộ đề 1

Câu 9: Độ phức tạp thời gian O(2^n) thường xuất hiện trong loại thuật toán 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ộ đề 1

Câu 10: Trong 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 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ộ đề 1

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

```
if (n > 10):
for i from 1 to n:
print(i)
else:
print("Nhỏ hơn 10")
```

Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 1

Câu 12: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi kích thước đầu vào 'n' rất lớ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ộ đề 1

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 trung bình là O(n log 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ộ đề 1

Câu 14: Điều gì KHÔNG phải là yếu tố ảnh hưởng đến độ phức tạp thời gian của thuật toá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ộ đề 1

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

```
function tinh_tong(n):
if n == 0:
return 0
else:
return n + tinh_tong(n-1)
```

Độ phức tạp thời gian của hàm `tinh_tong(n)` là:

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ộ đề 1

Câu 16: Để so sánh hiệu quả của hai thuật toán, một có độ phức tạp O(n) và một có độ phức tạp O(n^2), thuật toán nào sẽ hiệu quả hơn khi '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ộ đề 1

Câu 17: Trong thuật toán tìm kiếm tuyến tính, độ phức tạp thời gian tốt nhất 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ộ đề 1

Câu 18: Độ phức tạp thời gian O(n^3) thường liên quan đến 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ộ đề 1

Câu 19: Khi phân tích độ phức tạp thời gian, hằng số (ví dụ: O(2n) được đơn giản hóa thành O(n)) thường bị bỏ qua. Tại sao?

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ộ đề 1

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

```
for i from 1 to n:
j = 1
while j < n: j = j * 2 print(i, j) ``` Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 1

Câu 21: Trong thực tế, tại sao việc hiểu độ phức tạp thời gian của thuật toán lại quan trọng?

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ộ đề 1

Câu 22: Độ phức tạp thời gian nào sau đây thể hiện tốc độ tăng trưởng thời gian chạy nhanh nhất khi 'n' tăng?

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ộ đề 1

Câu 23: Để tính độ phức tạp thời gian tổng thể của một chương trình gồm nhiều đoạn mã thực hiện tuần tự, ta chọn độ phức tạp nào?

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ộ đề 1

Câu 24: Một thuật toán có độ phức tạp O(log n). Nếu thời gian chạy là 0.1 giây với n = 100, thời gian chạy ước tính với n = 10000 (gấp 100 lần) sẽ là khoảng 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ộ đề 1

Câu 25: Độ phức tạp thời gian O(n!) thường gặp trong các bài toán nào?

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ộ đề 1

Câu 26: Trong các độ phức tạp sau: O(n), O(log n), O(n^2), O(1), sắp xếp theo thứ tự tăng dần về hiệu suất (từ tốt nhất đến kém nhất).

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ộ đề 1

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

```
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à:

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ộ đề 1

Câu 28: Khi nào thì độ phức tạp thời gian trung bình của thuật toán khác biệt đáng kể so với độ phức tạp thời gian trường hợp xấu nhất?

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ộ đề 1

Câu 29: Ký hiệu Big O dùng để mô tả điều gì về hiệu suất của thuật toán?

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ộ đề 1

Câu 30: Trong tình huống nào, việc tối ưu độ phức tạp thời gian của thuật toán trở nên đặc biệt quan trọng?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Để tính tổng các phần tử trong một danh sách (list) có n phần tử, bạn cần duyệt qua mỗi phần tử một lần. Độ phức tạp thời gian của thuật toán này là bao nhiêu?

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

Câu 2: Xét một thuật toán tìm kiếm nhị phân trên một mảng đã được sắp xếp có n phần tử. Trong trường hợp xấu nhất, thuật toán này sẽ loại bỏ một nửa số phần tử ở mỗi bước. Độ phức tạp thời gian trong trường hợp xấu nhất là:

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

Câu 3: Một chương trình có hai vòng lặp for tuần tự. Vòng lặp thứ nhất chạy n lần và vòng lặp thứ hai chạy m lần. Biết n > m. Độ phức tạp thời gian tổng thể của chương trình này là:

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

Câu 4: Xét đoạn mã sau: `for i in range(n): for j in range(n): print(i, j)`. Độ phức tạp thời gian của đoạn mã này là:

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

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

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

Câu 6: Một hàm thực hiện một số phép gán, phép so sánh và phép toán số học mà không có vòng lặp hoặc đệ quy. Độ phức tạp thời gian của hàm này là:

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

Câu 7: Thuật toán sắp xếp trộn (Merge Sort) có độ phức tạp thời gian trung bình và trường hợp xấu nhất là:

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

Câu 8: Để kiểm tra xem một số n có phải là số nguyên tố hay không bằng cách thử chia cho tất cả các số từ 2 đến căn bậc hai của n, độ phức tạp thời gian của thuật toán này là:

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

Câu 9: Trong phân tích độ phức tạp thời gian, chúng ta thường tập trung vào trường hợp nào để đánh giá giới hạn trên về hiệu suất của thuật toán?

  • A. Trường hợp tốt nhất
  • B. Trường hợp trung bình
  • C. Trường hợp xấu nhất
  • D. Trường hợp điển hình

Câu 10: Khi so sánh hai thuật toán, một có độ phức tạp O(n log n) và một có độ phức tạp O(n^2), thuật toán nào sẽ hiệu quả hơn (thời gian chạy ít hơn) cho đầu vào kích thước lớn (n lớn)?

  • A. Thuật toán có độ phức tạp O(n log n)
  • B. Thuật toán có độ phức tạp O(n^2)
  • 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 11: Quy tắc nhân trong phân tích độ phức tạp thời gian áp dụng khi nào?

  • A. Khi các lệnh được thực hiện song song
  • B. Khi một khối lệnh được thực hiện bên trong một khối lệnh khác (ví dụ, vòng lặp lồng nhau)
  • C. Khi có các lệnh rẽ nhánh (if-else)
  • D. Khi tính tổng độ phức tạp của toàn bộ chương trình

Câu 12: Cho đoạn mã: `for i in range(n): if i % 2 == 0: for j in range(m): print(i, j)`. Giả sử n > m. Độ phức tạp thời gian của đoạn mã này là:

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

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

  • A. Thuật toán tìm kiếm nhị phân
  • B. Thuật toán sắp xếp trộn
  • C. Thuật toán vét cạn (Brute Force) cho một số bài toán
  • D. Thuật toán sắp xếp nhanh (Quick Sort)

Câu 14: Hàm đệ quy tính số Fibonacci có công thức F(n) = F(n-1) + F(n-2) với F(0)=0, F(1)=1 khi được triển khai một cách trực tiếp (không tối ưu hóa) có độ phức tạp thời gian là:

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

Câu 15: Giả sử bạn có một thuật toán với độ phức tạp O(n^3). 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. 8 lần
  • D. 16 lần

Câu 16: Trong thực tế, 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 thường được bỏ qua vì nó ít ảnh hưởng đến độ phức tạp khi n lớn?

  • A. Các hệ số hằng số và các số hạng bậc thấp
  • B. Các phép toán gán và so sánh
  • C. Số lượng vòng lặp
  • D. Kích thước của bộ nhớ sử dụng

Câu 17: Độ phức tạp thời gian O(n log n) thường được xem là thuộc loại độ phức tạp nào?

  • A. Bậc hai
  • B. Gần tuyến tính (Log-tuyến tính)
  • C. Mũ
  • D. Hằng số

Câu 18: Để tìm giá trị lớn nhất trong một mảng chưa sắp xếp có n phần tử, bạn cần duyệt qua tất cả các phần tử. Điều này có độ phức tạp thời gian là:

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

Câu 19: Xét đoạn mã: `for i in range(n): for j in range(i): print(i, j)`. Độ phức tạp thời gian của đoạn mã này là:

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

Câu 20: Trong trường hợp nào độ phức tạp thời gian không đổi khi kích thước đầu vào n tăng lên?

  • A. Khi độ phức tạp thời gian là O(1)
  • B. Khi độ phức tạp thời gian là O(n)
  • C. Khi độ phức tạp thời gian là O(log n)
  • D. Khi độ phức tạp thời gian là O(n log n)

Câu 21: Cho hai đoạn chương trình có độ phức tạp lần lượt là O(n) và O(log n) được thực hiện tuần tự. Độ phức tạp thời gian kết hợp của cả hai đoạn chương trình là:

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

Câu 22: Độ phức tạp O(log n) thường liên quan đến các thuật toán sử dụng kỹ thuật nào?

  • A. Duyệt vét cạn
  • B. Lặp tuyến tính
  • C. Sắp xếp nổi bọt
  • D. Chia để trị (Divide and Conquer)

Câu 23: Để tìm một phần tử cụ thể trong một mảng chưa sắp xếp, trong trường hợp xấu nhất, bạn có thể phải duyệt qua toàn bộ mảng. Độ phức tạp thời gian trong trường hợp này là:

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

Câu 24: Thuật toán sắp xếp nhanh (Quick Sort) có độ phức tạp thời gian trung bình là:

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

Câu 25: Trong biểu thức độ phức tạp thời gian T(n) = 5n^2 + 3n + 10, thành phần nào quyết định độ phức tạp thời gian khi n rất lớn?

  • A. 10
  • B. 5n^2
  • C. 3n
  • D. Cả 5n^2, 3n và 10 đều quan trọng như nhau

Câu 26: Khi nào phân tích độ phức tạp thời gian trở nên đặc biệt quan trọng trong phát triển phần mềm?

  • A. Khi chương trình chỉ có vài dòng code
  • B. Khi chương trình chạy trên máy tính có cấu hình mạnh
  • C. Khi chương trình phải xử lý dữ liệu lớn hoặc có yêu cầu về hiệu suất cao
  • D. Khi lập trình viên muốn viết code nhanh nhất có thể

Câu 27: Nếu một thuật toán có độ phức tạp O(n!), điều này có ý nghĩa gì về khả năng mở rộng của thuật toán khi kích thước đầu vào tăng lên?

  • A. Thuật toán mở rộng rất tốt và hiệu quả với đầu vào lớn
  • B. Thuật toán có thể mở rộng đến kích thước đầu vào rất lớn
  • C. Thuật toán mở rộng tuyến tính với kích thước đầu vào
  • D. Thuật toán rất khó mở rộng và trở nên chậm chạp nhanh chóng khi kích thước đầu vào tăng

Câu 28: Trong các độ phức tạp sau, độ phức tạp nào tăng trưởng chậm nhất khi n tăng?

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

Câu 29: Cho đoạn mã giả: `function process(array): if length(array) <= 1: return array else: mid = length(array) / 2; left_array = array[0...mid]; right_array = array[mid...end]; process(left_array); process(right_array); return concatenate(left_array, right_array)`. Đoạn mã này mô tả thuật toán nào và có độ phức tạp thời gian là bao nhiêu?

  • A. Sắp xếp chèn, O(n^2)
  • B. Sắp xếp nổi bọt, O(n^2)
  • C. Sắp xếp trộn, O(n log n)
  • D. Tìm kiếm nhị phân, O(log n)

Câu 30: Độ phức tạp thời gian giúp lập trình viên đưa ra quyết định nào quan trọng trong quá trình phát triển phần mềm?

  • A. Chọn ngôn ngữ lập trình phù hợp
  • B. Lựa chọn thuật toán và cấu trúc dữ liệu hiệu quả
  • C. Viết tài liệu hướng dẫn sử dụng phần mềm
  • D. Thiết kế giao diện người dùng đẹp mắt

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ộ đề 2

Câu 1: Để tính tổng các phần tử trong một danh sách (list) có n phần tử, bạn cần duyệt qua mỗi phần tử một lần. Độ phức tạp thời gian của thuật toán này là bao nhiêu?

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ộ đề 2

Câu 2: Xét một thuật toán tìm kiếm nhị phân trên một mảng đã được sắp xếp có n phần tử. Trong trường hợp xấu nhất, thuật toán này sẽ loại bỏ một nửa số phần tử ở mỗi bước. Độ phức tạp thời gian trong trường hợp xấu nhất là:

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ộ đề 2

Câu 3: Một chương trình có hai vòng lặp for tuần tự. Vòng lặp thứ nhất chạy n lần và vòng lặp thứ hai chạy m lần. Biết n > m. Độ phức tạp thời gian tổng thể của chương trình này là:

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ộ đề 2

Câu 4: Xét đoạn mã sau: `for i in range(n): for j in range(n): print(i, j)`. Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 2

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

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ộ đề 2

Câu 6: Một hàm thực hiện một số phép gán, phép so sánh và phép toán số học mà không có vòng lặp hoặc đệ quy. Độ phức tạp thời gian của hàm này là:

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ộ đề 2

Câu 7: Thuật toán sắp xếp trộn (Merge Sort) có độ phức tạp thời gian trung bình và trường hợp xấu nhất là:

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ộ đề 2

Câu 8: Để kiểm tra xem một số n có phải là số nguyên tố hay không bằng cách thử chia cho tất cả các số từ 2 đến căn bậc hai của n, độ phức tạp thời gian của thuật toán này là:

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ộ đề 2

Câu 9: Trong phân tích độ phức tạp thời gian, chúng ta thường tập trung vào trường hợp nào để đánh giá giới hạn trên về hiệu suất của thuật toá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ộ đề 2

Câu 10: Khi so sánh hai thuật toán, một có độ phức tạp O(n log n) và một có độ phức tạp O(n^2), thuật toán nào sẽ hiệu quả hơn (thời gian chạy ít hơn) cho đầu vào kích thước lớn (n 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ộ đề 2

Câu 11: Quy tắc nhân trong phân tích độ phức tạp thời gian áp dụng khi 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ộ đề 2

Câu 12: Cho đoạn mã: `for i in range(n): if i % 2 == 0: for j in range(m): print(i, j)`. Giả sử n > m. Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 2

Câu 13: Độ phức tạp O(2^n) thường xuất hiện trong các thuật toán nà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ộ đề 2

Câu 14: Hàm đệ quy tính số Fibonacci có công thức F(n) = F(n-1) + F(n-2) với F(0)=0, F(1)=1 khi được triển khai một cách trực tiếp (không tối ưu hóa) có độ phức tạp thời gian là:

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ộ đề 2

Câu 15: Giả sử bạn có một thuật toán với độ phức tạp O(n^3). 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?

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ộ đề 2

Câu 16: Trong thực tế, 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 thường được bỏ qua vì nó ít ảnh hưởng đến độ phức tạp khi 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ộ đề 2

Câu 17: Độ phức tạp thời gian O(n log n) thường được xem là thuộc loại độ phức tạp 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ộ đề 2

Câu 18: Để tìm giá trị lớn nhất trong một mảng chưa sắp xếp có n phần tử, bạn cần duyệt qua tất cả các phần tử. Điều này có độ phức tạp thời gian là:

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ộ đề 2

Câu 19: Xét đoạn mã: `for i in range(n): for j in range(i): print(i, j)`. Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 2

Câu 20: Trong trường hợp nào độ phức tạp thời gian không đổi khi kích thước đầu vào n tăng 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ộ đề 2

Câu 21: Cho hai đoạn chương trình có độ phức tạp lần lượt là O(n) và O(log n) được thực hiện tuần tự. Độ phức tạp thời gian kết hợp của cả hai đoạn chương trình là:

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ộ đề 2

Câu 22: Độ phức tạp O(log n) thường liên quan đến các thuật toán sử dụng kỹ thuật nào?

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ộ đề 2

Câu 23: Để tìm một phần tử cụ thể trong một mảng chưa sắp xếp, trong trường hợp xấu nhất, bạn có thể phải duyệt qua toàn bộ mảng. Độ phức tạp thời gian trong trường hợp này là:

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ộ đề 2

Câu 24: Thuật toán sắp xếp nhanh (Quick Sort) có độ phức tạp thời gian trung bình là:

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ộ đề 2

Câu 25: Trong biểu thức độ phức tạp thời gian T(n) = 5n^2 + 3n + 10, thành phần nào quyết định độ phức tạp thời gian khi n rất 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ộ đề 2

Câu 26: Khi nào phân tích độ phức tạp thời gian trở nên đặc biệt quan trọng trong phát triển phần mềm?

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ộ đề 2

Câu 27: Nếu một thuật toán có độ phức tạp O(n!), điều này có ý nghĩa gì về khả năng mở rộng của thuật toán khi kích thước đầu vào tăng lê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ộ đề 2

Câu 28: Trong các độ phức tạp sau, độ phức tạp nào tăng trưởng chậm nhất khi n tă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ộ đề 2

Câu 29: Cho đoạn mã giả: `function process(array): if length(array) <= 1: return array else: mid = length(array) / 2; left_array = array[0...mid]; right_array = array[mid...end]; process(left_array); process(right_array); return concatenate(left_array, right_array)`. Đoạn mã này mô tả thuật toán nào và có độ phức tạp thời gian 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ộ đề 2

Câu 30: Độ phức tạp thời gian giúp lập trình viên đưa ra quyết định nào quan trọng trong quá trình phát triển phần mềm?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Trong phân tích độ phức tạp thời gian thuật toán, ký hiệu Big O thường được sử dụng để mô tả điều gì?

  • A. Thời gian thực hiện chính xác của thuật toán trên một máy tính cụ thể.
  • B. Tốc độ tăng trưởng của thời gian thực hiện thuật toán khi kích thước đầu vào tăng lên.
  • C. Thời gian thực hiện trung bình của thuật toán trên các bộ dữ liệu khác nhau.
  • D. Thời gian thực hiện tốt nhất của thuật toán trong trường hợp đầu vào lý tưởng.

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

```
for i = 1 to n:
for j = 1 to m:
thực hiện thao tác O(1)
```

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

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

Câu 3: Thuật toán tìm kiếm nhị phân có độ phức tạp thời gian là O(log n). Điều này có nghĩa là gì về thời gian thực hiện thuật toán khi kích thước dữ liệu tăng gấp đôi?

  • A. Thời gian thực hiện cũng tăng gấp đôi.
  • B. Thời gian thực hiện tăng lên gấp bốn lần.
  • C. Thời gian thực hiện không thay đổi.
  • D. Thời gian thực hiện tăng lên một lượng không đáng kể.

Câu 4: Xét một thuật toán có độ phức tạp O(n^2). Nếu thời gian thực hiện thuật toán là 2 giây với n = 1000, thì thời gian thực hiện dự kiến sẽ là bao nhiêu với n = 2000 (giả sử các yếu tố khác không đổi)?

  • A. 4 giây
  • B. 8 giây
  • C. 16 giây
  • D. 32 giây

Câu 5: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian tổng thể khi một thuật toán bao gồm hai phần thực hiện tuần tự?

  • A. Quy tắc cộng (Sum Rule)
  • B. Quy tắc nhân (Product Rule)
  • C. Quy tắc chia (Division Rule)
  • D. Quy tắc lũy thừa (Exponentiation Rule)

Câu 6: Cho hai đoạn chương trình có độ phức tạp thời gian lần lượt là O(n) và O(log n). Nếu chúng được thực hiện tuần tự, độ phức tạp thời gian tổng thể của chương trình kết hợp là bao nhiêu?

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

Câu 7: Trong trường hợp nào độ phức tạp thời gian O(1) là lý tưởng nhất?

  • A. Khi cần xử lý dữ liệu lớn với thời gian tăng theo logarit.
  • B. Khi thời gian xử lý tăng tuyến tính với kích thước dữ liệu.
  • C. Khi thời gian xử lý không đổi, bất kể kích thước dữ liệu.
  • D. Khi thời gian xử lý tăng theo cấp số nhân với kích thước dữ liệu.

Câu 8: Độ phức tạp thời gian nào sau đây thể hiện hiệu suất kém nhất khi kích thước đầu vào "n" rất lớn?

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

Câu 9: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về hiệu suất (từ tốt nhất đến kém nhất): O(n), O(log n), O(1), O(n^2).

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

Câu 10: Trong thuật toán sắp xếp nổi bọt (Bubble Sort), số lượng phép so sánh trung bình và trường hợp xấu nhất là bao nhiêu?

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

Câu 11: Để xác định độ phức tạp thời gian của một hàm đệ quy, phương pháp nào thường được sử dụng?

  • A. Đếm số lượng vòng lặp
  • B. Phân tích quy tắc cộng
  • C. Phương pháp thế hoặc cây đệ quy
  • D. Đo thời gian chạy thực tế trên máy tính

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

```
function tinh_tong(n):
if n == 0:
return 0
else:
return n + tinh_tong(n-1)
```

Độ phức tạp thời gian của hàm `tinh_tong(n)` là bao nhiêu?

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

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

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

Câu 14: Độ phức tạp không gian (Space Complexity) của thuật toán đề cập đến điều gì?

  • A. Thời gian thực hiện tối đa của thuật toán.
  • B. Số lượng phép toán số học mà thuật toán thực hiện.
  • C. Lượng bộ nhớ mà thuật toán sử dụng để chạy.
  • D. Kích thước của mã nguồn chương trình.

Câu 15: Thuật toán sắp xếp trộn (Merge Sort) có độ phức tạp thời gian là O(n log n). Ưu điểm chính của độ phức tạp này so với O(n^2) là gì khi "n" lớn?

  • A. Thời gian thực hiện tăng chậm hơn đáng kể so với O(n^2) khi "n" tăng.
  • B. Thuật toán dễ cài đặt hơn so với các thuật toán O(n^2).
  • C. Độ phức tạp không gian luôn nhỏ hơn so với O(n^2).
  • D. Không có ưu điểm đáng kể, O(n^2) đôi khi nhanh hơn trong thực tế.

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

```
for i = 1 to n:
j = 1
while j < n: j = j * 2 thực hiện thao tác O(1) ``` Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 17: Độ phức tạp thời gian tốt nhất (Best Case) của thuật toán sắp xếp chèn (Insertion Sort) là bao nhiêu?

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

Câu 18: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian lại quan trọng hơn việc đo thời gian chạy thực tế của chương trình?

  • A. Đo thời gian chạy thực tế luôn chính xác hơn phân tích lý thuyết.
  • B. Phân tích độ phức tạp thời gian chỉ hữu ích cho các thuật toán rất phức tạp.
  • C. Đo thời gian chạy thực tế dễ thực hiện hơn phân tích độ phức tạp.
  • D. Phân tích độ phức tạp dự đoán hiệu suất với dữ liệu lớn, độc lập với môi trường chạy.

Câu 19: Cho một thuật toán có độ phức tạp O(n!). Độ phức tạp này thường xuất hiện trong loại bài toán nào?

  • A. Bài toán tìm kiếm trong danh sách đã sắp xếp.
  • B. Bài toán sắp xếp mảng số nguyên.
  • C. Bài toán liệt kê tất cả các hoán vị của một tập hợp.
  • D. Bài toán tìm đường đi ngắn nhất trên đồ thị.

Câu 20: Để cải thiện độ phức tạp thời gian từ O(n^2) xuống O(n log n) cho bài toán sắp xếp, thuật toán nào sau đây có thể được sử dụng?

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

Câu 21: Xét hàm băm (hash function) lý tưởng có thời gian tính toán O(1). Trong trường hợp tốt nhất, độ phức tạp thời gian để tìm kiếm một phần tử trong bảng băm (hash table) là bao nhiêu?

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

Câu 22: Độ phức tạp thời gian của phép toán truy cập một phần tử trong mảng (array) theo chỉ số (index) là bao nhiêu?

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

Câu 23: Giả sử bạn có một thuật toán với độ phức tạp O(n^3). Nếu bạn muốn giảm đáng kể thời gian chạy cho dữ liệu đầu vào lớn, bạn nên tìm cách cải thiện độ phức tạp xuống mức nào?

  • A. O(n log n) hoặc thấp hơn
  • B. O(n^2)
  • C. O(n^2 log n)
  • D. O(n^3 / 2)

Câu 24: Quy tắc nhân (Product Rule) trong phân tích độ phức tạp được áp dụng khi nào?

  • A. Khi các phần của thuật toán thực hiện tuần tự.
  • B. Khi các phần của thuật toán thực hiện lồng nhau.
  • C. Khi tính độ phức tạp trung bình.
  • D. Khi thuật toán sử dụng đệ quy.

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

```
for i = 1 to n:
for j = i to n:
thực hiện thao tác O(1)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 26: Điều gì KHÔNG phải là yếu tố ảnh hưởng đến thời gian chạy thực tế của chương trình, ngoài độ phức tạp thuật toán?

  • A. Loại bộ xử lý (CPU) của máy tính.
  • B. Ngôn ngữ lập trình được sử dụng.
  • C. Tên biến trong chương trình.
  • D. Trình biên dịch hoặc thông dịch được sử dụng.

Câu 27: Khi phân tích độ phức tạp thời gian, chúng ta thường tập trung vào trường hợp nào nhất?

  • A. Trường hợp tốt nhất (Best Case)
  • B. Trường hợp xấu nhất (Worst Case)
  • C. Trường hợp trung bình (Average Case)
  • D. Trường hợp điển hình (Typical Case)

Câu 28: Cho biết độ phức tạp thời gian của thuật toán Quick Sort trong trường hợp trung bình là?

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

Câu 29: Độ phức tạp thời gian O(n) còn được gọi là độ phức tạp gì?

  • A. Tuyến tính (Linear)
  • B. Logarit (Logarithmic)
  • C. Bậc hai (Quadratic)
  • D. Hằng số (Constant)

Câu 30: Trong một chương trình phức tạp, việc xác định độ phức tạp thời gian của toàn bộ chương trình thường được thực hiện bằng cách nào?

  • A. Đo thời gian chạy thực tế trên nhiều bộ dữ liệu khác nhau.
  • B. Chia chương trình thành các phần nhỏ, phân tích từng phần rồi kết hợp.
  • C. Chỉ tập trung vào phần mã nguồn quan trọng nhất.
  • D. Sử dụng công cụ phân tích tự động mà không cần hiểu chi tiế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ộ đề 3

Câu 1: Trong phân tích độ phức tạp thời gian thuật toán, ký hiệu Big O thường được sử dụng để mô tả đ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ộ đề 3

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

```
for i = 1 to n:
for j = 1 to m:
thực hiện thao tác O(1)
```

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

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ộ đề 3

Câu 3: Thuật toán tìm kiếm nhị phân có độ phức tạp thời gian là O(log n). Điều này có nghĩa là gì về thời gian thực hiện thuật toán khi kích thước dữ liệu tăng gấp đôi?

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ộ đề 3

Câu 4: Xét một thuật toán có độ phức tạp O(n^2). Nếu thời gian thực hiện thuật toán là 2 giây với n = 1000, thì thời gian thực hiện dự kiến sẽ là bao nhiêu với n = 2000 (giả sử các yếu tố khác không đổi)?

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ộ đề 3

Câu 5: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian tổng thể khi một thuật toán bao gồm hai phần thực hiện tuần tự?

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ộ đề 3

Câu 6: Cho hai đoạn chương trình có độ phức tạp thời gian lần lượt là O(n) và O(log n). Nếu chúng được thực hiện tuần tự, độ phức tạp thời gian tổng thể của chương trình kết hợp là bao nhiêu?

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ộ đề 3

Câu 7: Trong trường hợp nào độ phức tạp thời gian O(1) là lý tưởng nhất?

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ộ đề 3

Câu 8: Độ phức tạp thời gian nào sau đây thể hiện hiệu suất kém nhất khi kích thước đầu vào 'n' rất lớ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ộ đề 3

Câu 9: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về hiệu suất (từ tốt nhất đến kém nhất): O(n), O(log n), O(1), O(n^2).

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ộ đề 3

Câu 10: Trong thuật toán sắp xếp nổi bọt (Bubble Sort), số lượng phép so sánh trung bình và trường hợp xấu nhất 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ộ đề 3

Câu 11: Để xác định độ phức tạp thời gian của một hàm đệ quy, phương pháp nào thường được sử dụng?

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ộ đề 3

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

```
function tinh_tong(n):
if n == 0:
return 0
else:
return n + tinh_tong(n-1)
```

Độ phức tạp thời gian của hàm `tinh_tong(n)` là bao nhiêu?

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ộ đề 3

Câu 13: Trong thuật toán tìm kiếm tuyến tính (Linear Search), độ phức tạp thời gian trường hợp xấu nhất 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ộ đề 3

Câu 14: Độ phức tạp không gian (Space Complexity) của thuật toán đề cập đến điều 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ộ đề 3

Câu 15: Thuật toán sắp xếp trộn (Merge Sort) có độ phức tạp thời gian là O(n log n). Ưu điểm chính của độ phức tạp này so với O(n^2) là gì khi 'n' lớ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ộ đề 3

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

```
for i = 1 to n:
j = 1
while j < n: j = j * 2 thực hiện thao tác O(1) ``` Độ 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ộ đề 3

Câu 17: Độ phức tạp thời gian tốt nhất (Best Case) của thuật toán sắp xếp chèn (Insertion Sort) 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ộ đề 3

Câu 18: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian lại quan trọng hơn việc đo thời gian chạy thực tế của chương trình?

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ộ đề 3

Câu 19: Cho một thuật toán có độ phức tạp O(n!). Độ phức tạp này thường xuất hiện trong loại bài toán 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ộ đề 3

Câu 20: Để cải thiện độ phức tạp thời gian từ O(n^2) xuống O(n log n) cho bài toán sắp xếp, thuật toán nào sau đây có thể được sử dụ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ộ đề 3

Câu 21: Xét hàm băm (hash function) lý tưởng có thời gian tính toán O(1). Trong trường hợp tốt nhất, độ phức tạp thời gian để tìm kiếm một phần tử trong bảng băm (hash table) 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ộ đề 3

Câu 22: Độ phức tạp thời gian của phép toán truy cập một phần tử trong mảng (array) theo chỉ số (index) 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ộ đề 3

Câu 23: Giả sử bạn có một thuật toán với độ phức tạp O(n^3). Nếu bạn muốn giảm đáng kể thời gian chạy cho dữ liệu đầu vào lớn, bạn nên tìm cách cải thiện độ phức tạp xuống mức nào?

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ộ đề 3

Câu 24: Quy tắc nhân (Product Rule) trong phân tích độ phức tạp được áp dụng khi 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ộ đề 3

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

```
for i = 1 to n:
for j = i to n:
thực hiện thao tác O(1)
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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ộ đề 3

Câu 26: Điều gì KHÔNG phải là yếu tố ảnh hưởng đến thời gian chạy thực tế của chương trình, ngoài độ phức tạp thuật toá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ộ đề 3

Câu 27: Khi phân tích độ phức tạp thời gian, chúng ta thường tập trung vào trường hợp nào nhấ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ộ đề 3

Câu 28: Cho biết độ phức tạp thời gian của thuật toán Quick Sort trong trường hợp trung bình là?

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ộ đề 3

Câu 29: Độ phức tạp thời gian O(n) còn được gọi là độ phức tạp 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ộ đề 3

Câu 30: Trong một chương trình phức tạp, việc xác định độ phức tạp thời gian của toàn bộ chương trình thường được thực hiện bằng cách nào?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Độ phức tạp thời gian của một thuật toán được định nghĩa là gì?

  • A. Lượng bộ nhớ máy tính mà thuật toán sử dụng.
  • B. Hàm mô tả sự tăng thời gian thực hiện thuật toán theo kích thước đầu vào.
  • C. Số lượng dòng code trong chương trình.
  • D. Thời gian chạy thực tế của chương trình trên một máy tính cụ thể.

Câu 2: Ký hiệu Big O thường được sử dụng để mô tả khía cạnh nào của độ phức tạp thời gian?

  • A. Độ phức tạp trung bình của thuật toán.
  • B. Độ phức tạp tốt nhất của thuật toán.
  • C. Độ phức tạp trường hợp xấu nhất của thuật toán.
  • D. Độ phức tạp trường hợp trung bình và tốt nhất của thuật toán.

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

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

Câu 4: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?
```
for i in range(n):
print(i)
```

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

Câu 5: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian khi các đoạn chương trình được thực hiện tuần tự (nối tiếp nhau)?

  • A. Quy tắc cộng (Sum Rule).
  • B. Quy tắc nhân (Product Rule).
  • C. Quy tắc chia (Division Rule).
  • D. Quy tắc lũy thừa (Power Rule).

Câu 6: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?
```
for i in range(n):
for j in range(n):
print(i, j)
```

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

Câu 7: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp gì?

  • A. Độ phức tạp tuyến tính.
  • B. Độ phức tạp logarit.
  • C. Độ phức tạp hằng số.
  • D. Độ phức tạp bậc hai.

Câu 8: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về hiệu suất (từ tốt nhất đến kém nhất): O(n), O(log n), O(n^2), O(1).

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

Câu 9: Cho hai đoạn chương trình có độ phức tạp thời gian lần lượt là O(n) và O(n log n). Nếu chúng được thực hiện tuần tự, độ phức tạp thời gian tổng cộng sẽ là:

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

Câu 10: Trong trường hợp nào, việc phân tích độ phức tạp thời gian trở nên đặc biệt quan trọng?

  • A. Khi chương trình chỉ chạy trên dữ liệu nhỏ.
  • B. Khi thời gian chạy chương trình không quan trọng.
  • C. Khi chương trình chỉ cần chạy đúng một lần.
  • D. Khi chương trình phải xử lý dữ liệu lớn và yêu cầu hiệu suất cao.

Câu 11: Độ phức tạp thời gian của thuật toán sắp xếp trộn (Merge Sort) là bao nhiêu?

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

Câu 12: Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (Linear Search) trong trường hợp xấu nhất là:

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

Câu 13: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?
```
if n > 0:
for i in range(1000):
print(i)
```

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

Câu 14: Để nhân hai ma trận vuông kích thước n x n bằng thuật toán thông thường, độ phức tạp thời gian là:

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

Câu 15: Nếu một thuật toán có độ phức tạp thời gian O(n^2), điều gì xảy ra với thời gian chạy khi kích thước đầu vào n tăng gấp đôi?

  • A. Thời gian chạy tăng gấp đôi.
  • B. Thời gian chạy không đổi.
  • C. Thời gian chạy tăng gấp bốn lần.
  • D. Thời gian chạy giảm đi một nửa.

Câu 16: Trong phân tích độ phức tạp thời gian, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua vì:

  • A. Chúng không ảnh hưởng đến thời gian chạy thực tế.
  • B. Chúng trở nên không đáng kể khi kích thước đầu vào n rất lớn.
  • C. Chúng chỉ xuất hiện trong các thuật toán đơn giản.
  • D. Chúng được tính đến trong độ phức tạp trung bình.

Câu 17: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất cho kích thước đầu vào lớn?

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

Câu 18: Thuật toán sắp xếp nhanh (Quick Sort) có độ phức tạp thời gian trung bình là:

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

Câu 19: Tìm kiếm phần tử trong một mảng đã được sắp xếp bằng tìm kiếm nhị phân có độ phức tạp thời gian tốt hơn so với tìm kiếm tuyến tính vì:

  • A. Tìm kiếm nhị phân dễ cài đặt hơn.
  • B. Tìm kiếm nhị phân sử dụng ít bộ nhớ hơn.
  • C. Tìm kiếm nhị phân loại bỏ một nửa không gian tìm kiếm ở mỗi bước.
  • D. Tìm kiếm nhị phân luôn tìm thấy phần tử nhanh hơn.

Câu 20: Khi phân tích độ phức tạp thời gian của một hàm đệ quy, quy tắc nào thường được sử dụng?

  • A. Quy tắc cộng.
  • B. Quy tắc nhân.
  • C. Quy tắc chia.
  • D. Phương pháp thế hoặc định lý thợ (Master Theorem).

Câu 21: 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) và thuật toán B có độ phức tạp O(n log n). Thuật toán nào hiệu quả hơn cho n lớn?

  • A. Thuật toán A (O(n)).
  • B. Thuật toán B (O(n log n)).
  • 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 22: Độ phức tạp thời gian O(n!) thường xuất hiện trong các thuật toán nào?

  • A. Thuật toán sắp xếp tối ưu.
  • B. Thuật toán tìm kiếm tối ưu.
  • C. Thuật toán vét cạn (Brute-force) giải bài toán người du lịch.
  • D. Thuật toán chia để trị.

Câu 23: Cho đoạn mã sau, với giả định phép toán `func()` có độ phức tạp O(1), độ phức tạp thời gian của đoạn mã là bao nhiêu?
```
for i in range(n):
for j in range(i):
func()
```

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

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

  • A. Tìm kiếm nhị phân.
  • B. Tìm kiếm nội suy (Interpolation Search) trong một số trường hợp.
  • C. Sắp xếp trộn.
  • D. Sắp xếp nhanh.

Câu 25: Để tính tổng các phần tử trong một mảng có n phần tử, độ phức tạp thời gian là:

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

Câu 26: Độ phức tạp thời gian của việc truy cập một phần tử trong mảng bằng chỉ số (index) là:

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

Câu 27: Trong biểu thức độ phức tạp thời gian O(f(n)), f(n) thường đại diện cho:

  • A. Thời gian chạy thực tế của thuật toán.
  • B. Hàm toán học mô tả tốc độ tăng trưởng thời gian chạy theo n.
  • C. Số lượng phép toán cơ bản trong thuật toán.
  • D. Kích thước bộ nhớ sử dụng bởi thuật toán.

Câu 28: Thuật toán Floyd-Warshall để tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh trong đồ thị có độ phức tạp thời gian là:

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

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

  • A. Khoảng 1 giây.
  • B. Khoảng 10 giây.
  • C. Khoảng 100 giây.
  • D. Khoảng 1000 giây.

Câu 30: Trong thực tế, khi lựa chọn thuật toán, ngoài độ phức tạp thời gian, yếu tố nào khác cũng cần được xem xét?

  • A. Ngôn ngữ lập trình sử dụng.
  • B. Hệ điều hành đang chạy.
  • C. Độ phức tạp bộ nhớ và tính dễ cài đặt.
  • D. Tốc độ CPU của máy tính.

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ộ đề 4

Câu 1: Độ phức tạp thời gian của một thuật toán được định nghĩa 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ộ đề 4

Câu 2: Ký hiệu Big O thường được sử dụng để mô tả khía cạnh nào của độ phức tạp thời gian?

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ộ đề 4

Câu 3: Thuật toán nào sau đây có độ phức tạp thời gian là O(log 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ộ đề 4

Câu 4: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?
```
for i in range(n):
print(i)
```

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ộ đề 4

Câu 5: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian khi các đoạn chương trình được thực hiện tuần tự (nối tiếp nhau)?

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ộ đề 4

Câu 6: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?
```
for i in range(n):
for j in range(n):
print(i, j)
```

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ộ đề 4

Câu 7: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp 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ộ đề 4

Câu 8: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về hiệu suất (từ tốt nhất đến kém nhất): O(n), O(log n), O(n^2), O(1).

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ộ đề 4

Câu 9: Cho hai đoạn chương trình có độ phức tạp thời gian lần lượt là O(n) và O(n log n). Nếu chúng được thực hiện tuần tự, độ phức tạp thời gian tổng cộng sẽ là:

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ộ đề 4

Câu 10: Trong trường hợp nào, việc phân tích độ phức tạp thời gian trở nên đặc biệt quan trọng?

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ộ đề 4

Câu 11: Độ phức tạp thời gian của thuật toán sắp xếp trộn (Merge Sort) là bao nhiêu?

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ộ đề 4

Câu 12: Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (Linear Search) trong trường hợp xấu nhất là:

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ộ đề 4

Câu 13: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?
```
if n > 0:
for i in range(1000):
print(i)
```

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ộ đề 4

Câu 14: Để nhân hai ma trận vuông kích thước n x n bằng thuật toán thông thường, độ phức tạp thời gian là:

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ộ đề 4

Câu 15: Nếu một thuật toán có độ phức tạp thời gian O(n^2), điều gì xảy ra với thời gian chạy khi kích thước đầu vào n tăng gấp đôi?

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ộ đề 4

Câu 16: Trong phân tích độ phức tạp thời gian, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua vì:

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ộ đề 4

Câu 17: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất cho kích thước đầu vào lớ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ộ đề 4

Câu 18: Thuật toán sắp xếp nhanh (Quick Sort) có độ phức tạp thời gian trung bình là:

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ộ đề 4

Câu 19: Tìm kiếm phần tử trong một mảng đã được sắp xếp bằng tìm kiếm nhị phân có độ phức tạp thời gian tốt hơn so với tìm kiếm tuyến tính vì:

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ộ đề 4

Câu 20: Khi phân tích độ phức tạp thời gian của một hàm đệ quy, quy tắc nào thường được sử dụ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ộ đề 4

Câu 21: 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) và thuật toán B có độ phức tạp O(n log n). Thuật toán nào hiệu quả hơn cho 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ộ đề 4

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

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ộ đề 4

Câu 23: Cho đoạn mã sau, với giả định phép toán `func()` có độ phức tạp O(1), độ phức tạp thời gian của đoạn mã là bao nhiêu?
```
for i in range(n):
for j in range(i):
func()
```

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ộ đề 4

Câu 24: Độ phức tạp thời gian O(log log n) thường xuất hiện trong thuật toán 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ộ đề 4

Câu 25: Để tính tổng các phần tử trong một mảng có n phần tử, độ phức tạp thời gian là:

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ộ đề 4

Câu 26: Độ phức tạp thời gian của việc truy cập một phần tử trong mảng bằng chỉ số (index) là:

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ộ đề 4

Câu 27: Trong biểu thức độ phức tạp thời gian O(f(n)), f(n) thường đại diện cho:

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ộ đề 4

Câu 28: Thuật toán Floyd-Warshall để tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh trong đồ thị có độ phức tạp thời gian là:

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ộ đề 4

Câu 29: Nếu độ phức tạp thời gian của một thuật toán là O(n log n), và thời gian chạy cho n = 1000 là 1 giây, ước tính thời gian chạy cho n = 10000 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ộ đề 4

Câu 30: Trong thực tế, khi lựa chọn thuật toán, ngoài độ phức tạp thời gian, yếu tố nào khác cũng cần được xem xét?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Để đánh giá hiệu quả của một thuật toán sắp xếp, yếu tố nào sau đây được xem xét quan trọng nhất trong phân tích độ phức tạp thời gian?

  • A. Thời gian chạy thực tế trên một máy tính cụ thể.
  • B. Số dòng code trong chương trình.
  • C. Dung lượng bộ nhớ sử dụng.
  • D. Sự thay đổi thời gian thực hiện khi kích thước dữ liệu đầu vào tăng lên.

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

```
for i = 1 to n:
for j = 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^2)
  • D. O(n log n)

Câu 3: Thuật toán tìm kiếm nhị phân 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 thực hiện thuật toán tăng tuyến tính với kích thước dữ liệu.
  • B. Thời gian thực hiện thuật toán tăng theo hàm logarit của kích thước dữ liệu.
  • C. Thời gian thực hiện thuật toán không đổi, không phụ thuộc vào kích thước dữ liệu.
  • D. Thời gian thực hiện thuật toán tăng theo lũy thừa của kích thước dữ liệu.

Câu 4: Trong các độ phức tạp thời gian sau, độ phức tạp nào thể hiện thuật toán hiệu quả nhất khi kích thước dữ liệu đầu vào rất lớn?

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

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

  • A. Khi các vòng lặp được lồng vào nhau.
  • B. Khi các đoạn chương trình thực hiện tuần tự.
  • C. Khi sử dụng cấu trúc rẽ nhánh (if-else).
  • D. Khi thực hiện các phép toán số học cơ bản.

Câu 6: Cho hai đoạn chương trình có độ phức tạp thời gian lần lượt là O(n) và O(n^2). Nếu hai đoạn chương trình này được thực hiện tuần tự, độ phức tạp thời gian tổng cộng của chương trình là bao nhiêu?

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

Câu 7: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp gì?

  • A. Độ phức tạp tuyến tính.
  • B. Độ phức tạp logarit.
  • C. Độ phức tạp bình phương.
  • D. Độ phức tạp hằng số.

Câu 8: Trong trường hợp nào, độ phức tạp thời gian của thuật toán sắp xếp chèn (Insertion Sort) là O(n^2)?

  • A. Khi dữ liệu đầu vào đã được sắp xếp.
  • B. Khi dữ liệu đầu vào gần như đã được sắp xếp.
  • C. Khi dữ liệu đầu vào được sắp xếp ngược lại.
  • D. Độ phức tạp của Insertion Sort luôn là O(n^2) trong mọi trường hợp.

Câu 9: Hàm băm (hash function) lý tưởng có độ phức tạp thời gian trung bình để tìm kiếm, chèn và xóa phần tử là bao nhiêu?

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

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

```
function tinh_tong(n):
if n == 0:
return 0
else:
return n + tinh_tong(n-1)
```

Độ phức tạp thời gian của hàm `tinh_tong(n)` là bao nhiêu?

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

Câu 11: Để tìm kiếm một phần tử trong một mảng đã sắp xếp, thuật toán nào sau đây có độ phức tạp thời gian tốt nhất?

  • A. Tìm kiếm tuyến tính (Linear Search)
  • B. Sắp xếp nổi bọt (Bubble Sort) rồi tìm kiếm tuyến tính.
  • C. Tìm kiếm nhị phân (Binary Search)
  • D. Tìm kiếm theo chiều rộng (Breadth-First Search)

Câu 12: Độ 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. Thuật toán tìm kiếm tuyến tính.
  • B. Thuật toán sắp xếp trộn (Merge Sort) và sắp xếp nhanh (Quick Sort).
  • C. Thuật toán duyệt đồ thị theo chiều sâu (DFS).
  • D. Thuật toán tính giai thừa bằng đệ quy.

Câu 13: Giả sử bạn có một thuật toán với độ phức tạp thời gian O(2^n). Điều gì xảy ra với thời gian chạy khi kích thước đầu vào n tăng lên một chút?

  • A. Thời gian chạy giảm đi.
  • B. Thời gian chạy tăng lên một chút không đáng kể.
  • C. Thời gian chạy tăng lên tuyến tính.
  • D. Thời gian chạy tăng lên rất nhanh theo cấp số nhân.

Câu 14: Trong 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 nhấ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. Cả ba trường hợp đều quan trọng như nhau.

Câu 15: Để tính tổng các phần tử trong một mảng có n phần tử, độ phức tạp thời gian là bao nhiêu?

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

Câu 16: Cho đoạn mã giả:
```
for i from 1 to n:
if i is even:
for j from 1 to n:
print(i, j)
```
Độ phức tạp thời gian của đoạn mã này là:

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

Câu 17: Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình là O(n log n)?

  • A. Bubble Sort
  • B. Quick Sort
  • C. Insertion Sort
  • D. Selection Sort

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

  • A. Khi các lệnh được thực hiện tuần tự.
  • B. Khi có cấu trúc rẽ nhánh (if-else).
  • C. Khi thực hiện các phép gán.
  • D. Khi có các vòng lặp lồng nhau hoặc các bước thực hiện phụ thuộc nhau.

Câu 19: Chọn phát biểu đúng về độ phức tạp thời gian.

  • A. Độ phức tạp thời gian mô tả sự tăng trưởng thời gian thực hiện thuật toán theo kích thước đầu vào.
  • B. Độ phức tạp thời gian đo thời gian chạy chính xác của chương trình trên một máy tính cụ thể.
  • C. Độ phức tạp thời gian phụ thuộc vào ngôn ngữ lập trình sử dụng.
  • D. Độ phức tạp thời gian không quan trọng khi kích thước đầu vào nhỏ.

Câu 20: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất cho các bài toán có kích thước đầu vào lớn?

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

Câu 21: Cho đoạn mã giả:
```
while (n > 1):
n = n / 2
```
Độ phức tạp thời gian của vòng lặp `while` này là:

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

Câu 22: Trong các thuật toán sắp xếp, thuật toán nào có độ phức tạp thời gian tốt nhất trong trường hợp trung bình?

  • A. Bubble Sort
  • B. Quick Sort
  • C. Insertion Sort
  • D. Selection Sort

Câu 23: Độ phức tạp thời gian của phép toán truy cập một phần tử trong mảng (ví dụ: `arr[i]`) là:

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

Câu 24: Để tìm phần tử lớn nhất trong một mảng chưa sắp xếp, độ phức tạp thời gian tối thiểu là bao nhiêu?

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

Câu 25: Cho đoạn mã giả:
```
for i from 1 to n:
print(i)
for j from 1 to m:
print(j)
```
Độ phức tạp thời gian của hai vòng lặp tuần tự này, với n và m là kích thước đầu vào khác nhau, là:

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

Câu 26: Trong biểu đồ thể hiện độ phức tạp thời gian, đường cong nào tăng trưởng chậm nhất khi kích thước đầu vào tăng lên?

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

Câu 27: Độ phức tạp thời gian O(n!) thường gặp trong thuật toán nào?

  • A. Sắp xếp mảng.
  • B. Tìm kiếm nhị phân.
  • C. Bài toán người du lịch (Traveling Salesperson Problem) giải bằng vét cạn.
  • D. Tính tổng mảng.

Câu 28: Điều gì xảy ra với thời gian chạy của thuật toán O(n^2) khi kích thước đầu vào n tăng gấp đôi?

  • A. Thời gian chạy tăng gấp đôi.
  • B. Thời gian chạy không đổi.
  • C. Thời gian chạy giảm đi.
  • D. Thời gian chạy tăng lên gấp bốn lần.

Câu 29: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian lại quan trọng?

  • A. Giúp lựa chọn thuật toán hiệu quả cho kích thước dữ liệu lớn và dự đoán hiệu suất chương trình.
  • B. Giúp viết code ngắn gọn hơn.
  • C. Giúp chương trình chạy nhanh hơn trên mọi máy tính.
  • D. Giúp tiết kiệm bộ nhớ khi chạy chương trình.

Câu 30: Để giảm độ phức tạp thời gian của một thuật toán, phương pháp nào sau đây thường được sử dụng?

  • A. Tăng tốc độ CPU của máy tính.
  • B. Sử dụng ngôn ngữ lập trình bậc thấp.
  • C. Cải tiến thuật toán và sử dụng cấu trúc dữ liệu phù hợp.
  • D. Tăng dung lượng bộ nhớ RAM.

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ộ đề 5

Câu 1: Để đánh giá hiệu quả của một thuật toán sắp xếp, yếu tố nào sau đây được xem xét quan trọng nhất trong phân tích độ phức tạp thời gian?

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ộ đề 5

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

```
for i = 1 to n:
for j = 1 to n:
print(i * j)
```

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

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ộ đề 5

Câu 3: Thuật toán tìm kiếm nhị phân có độ phức tạp thời gian là O(log n). Điều này có nghĩa 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ộ đề 5

Câu 4: Trong các độ phức tạp thời gian sau, độ phức tạp nào thể hiện thuật toán hiệu quả nhất khi kích thước dữ liệu đầu vào rất lớn?

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ộ đề 5

Câu 5: Quy tắc cộng trong phân tích độ phức tạp thời gian áp dụng khi 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ộ đề 5

Câu 6: Cho hai đoạn chương trình có độ phức tạp thời gian lần lượt là O(n) và O(n^2). Nếu hai đoạn chương trình này được thực hiện tuần tự, độ phức tạp thời gian tổng cộng của chương trình là bao nhiêu?

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ộ đề 5

Câu 7: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp 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ộ đề 5

Câu 8: Trong trường hợp nào, độ phức tạp thời gian của thuật toán sắp xếp chèn (Insertion Sort) là O(n^2)?

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ộ đề 5

Câu 9: Hàm băm (hash function) lý tưởng có độ phức tạp thời gian trung bình để tìm kiếm, chèn và xóa phần 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ộ đề 5

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

```
function tinh_tong(n):
if n == 0:
return 0
else:
return n + tinh_tong(n-1)
```

Độ phức tạp thời gian của hàm `tinh_tong(n)` 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ộ đề 5

Câu 11: Để tìm kiếm một phần tử trong một mảng đã sắp xếp, thuật toán nào sau đây có độ phức tạp thời gian tốt nhất?

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ộ đề 5

Câu 12: Độ 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?

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ộ đề 5

Câu 13: Giả sử bạn có một thuật toán với độ phức tạp thời gian O(2^n). Điều gì xảy ra với thời gian chạy khi kích thước đầu vào n tăng lên một chú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ộ đề 5

Câu 14: Trong 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 nhất?

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ộ đề 5

Câu 15: Để tính tổng các phần tử trong một mảng có n phần tử, độ phức tạp thời gian 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ộ đề 5

Câu 16: Cho đoạn mã giả:
```
for i from 1 to n:
if i is even:
for j from 1 to n:
print(i, j)
```
Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 5

Câu 17: Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình là O(n log 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ộ đề 5

Câu 18: Quy tắc nhân độ phức tạp thời gian được áp dụng khi 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ộ đề 5

Câu 19: Chọn phát biểu đúng về độ phức tạp thời gian.

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ộ đề 5

Câu 20: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất cho các bài toán có kích thước đầu vào 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ộ đề 5

Câu 21: Cho đoạn mã giả:
```
while (n > 1):
n = n / 2
```
Độ phức tạp thời gian của vòng lặp `while` này là:

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ộ đề 5

Câu 22: Trong các thuật toán sắp xếp, thuật toán nào có độ phức tạp thời gian tốt nhất trong trường hợp trung bình?

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ộ đề 5

Câu 23: Độ phức tạp thời gian của phép toán truy cập một phần tử trong mảng (ví dụ: `arr[i]`) là:

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ộ đề 5

Câu 24: Để tìm phần tử lớn nhất trong một mảng chưa sắp xếp, độ phức tạp thời gian tối thiểu 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ộ đề 5

Câu 25: Cho đoạn mã giả:
```
for i from 1 to n:
print(i)
for j from 1 to m:
print(j)
```
Độ phức tạp thời gian của hai vòng lặp tuần tự này, với n và m là kích thước đầu vào khác nhau, là:

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ộ đề 5

Câu 26: Trong biểu đồ thể hiện độ phức tạp thời gian, đường cong nào tăng trưởng chậm nhất khi kích thước đầu vào tăng lê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ộ đề 5

Câu 27: Độ phức tạp thời gian O(n!) thường gặp trong thuật toán nào?

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ộ đề 5

Câu 28: Điều gì xảy ra với thời gian chạy của thuật toán O(n^2) khi kích thước đầu vào n tăng gấp đôi?

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ộ đề 5

Câu 29: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian lại quan trọng?

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ộ đề 5

Câu 30: Để giảm độ phức tạp thời gian của một thuật toán, phương pháp nào sau đây thường được sử dụng?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Trong phân tích độ phức tạp thời gian thuật toán, ký hiệu Big O thường được sử dụng để mô tả điều gì?

  • A. Thời gian thực tế chạy chương trình trên một máy tính cụ thể.
  • B. Tốc độ tăng trưởng của thời gian chạy thuật toán theo kích thước đầu vào.
  • C. Số lượng dòng code trong chương trình.
  • D. Dung lượng bộ nhớ mà chương trình sử dụng.

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

```
for i = 1 to n:
for j = 1 to m:
thực hiện thao tác O(1)
```

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

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

Câu 3: Quy tắc cộng trong phân tích độ phức tạp thời gian phát biểu rằng, nếu một chương trình gồm hai phần thực hiện tuần tự với độ phức tạp lần lượt là O(f(n)) và O(g(n)), thì độ phức tạp tổng thể của chương trình là:

  • A. O(f(n) * g(n))
  • B. O(max(f(n), g(n)))
  • C. O(f(n) + g(n))
  • D. O(min(f(n), g(n)))

Câu 4: Thuật toán tìm kiếm nhị phân (binary search) có độ phức tạp thời gian là O(log n). Điều này có nghĩa là:

  • A. Thời gian chạy thuật toán tăng tuyến tính với kích thước đầu vào.
  • B. Thời gian chạy thuật toán không đổi dù kích thước đầu vào tăng.
  • C. Thời gian chạy thuật toán tăng theo lũy thừa của kích thước đầu vào.
  • D. Số lượng thao tác cần thiết để tìm kiếm giảm đi một nửa sau mỗi bước, khi kích thước đầu vào tăng gấp đôi.

Câu 5: Xét một thuật toán có độ phức tạp thời gian O(n^3). 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. 8 lần
  • D. 16 lần

Câu 6: Trong các độ phức tạp thời gian sau, độ phức tạp nào là hiệu quả nhất cho một thuật toán xử lý dữ liệu lớn?

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

Câu 7: Cho hai đoạn chương trình A và B thực hiện nối tiếp nhau. Đoạn A có độ phức tạp O(n log n) và đoạ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 là:

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

Câu 8: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp:

  • A. Tuyến tính
  • B. Hằng số
  • C. Logarit
  • D. Bậc nhất

Câu 9: Trong trường hợp nào, độ phức tạp thời gian của thuật toán sắp xếp chèn (insertion sort) là O(n^2)?

  • A. Mảng đầu vào đã được sắp xếp.
  • B. Mảng đầu vào gần như đã được sắp xếp.
  • C. Mảng đầu vào có kích thước nhỏ.
  • D. Mảng đầu vào được sắp xếp theo thứ tự ngược lại.

Câu 10: Để tính độ phức tạp thời gian của một hàm đệ quy, phương pháp nào thường được sử dụng?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Hệ thức đệ quy
  • D. Phân tích thực nghiệm

Câu 11: Cho thuật toán tìm kiếm tuần tự (linear search) trong một danh sách có n phần tử. Trong trường hợp tốt nhất, độ phức tạp thời gian là bao nhiêu?

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

Câu 12: Trong phân tích độ phức tạp thuật toán, chúng ta thường quan tâm đến trường hợp nào nhất?

  • A. Trường hợp tốt nhất
  • B. Trường hợp trung bình
  • C. Trường hợp xấu nhất
  • D. Trường hợp điển hình

Câu 13: Giả sử bạn có một thuật toán với độ phức tạp O(n log n). Nếu bạn tăng kích thước đầu vào từ 1000 lên 10000 (gấp 10 lần), thời gian chạy dự kiến sẽ tăng lên khoảng bao nhiêu lần?

  • A. Khoảng 100 lần
  • B. Khoảng 10-15 lần
  • C. Khoảng 2-3 lần
  • D. Không thay đổi đáng kể

Câu 14: Độ phức tạp thời gian của thuật toán sắp xếp nổi bọt (bubble sort) trong trường hợp trung bình là:

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

Câu 15: Trong các độ phức tạp sau, độ phức tạp nào thể hiện tốc độ tăng trưởng thời gian chạy chậm nhất khi kích thước đầu vào tăng lên rất lớn?

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

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

```
for i = 1 to n:
j = 1
while j < n: j = j * 2 thực hiện thao tác O(1) ``` Độ phức tạp thời gian của đoạn mã này là:

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

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

  • A. Khi các phần chương trình thực hiện tuần tự độc lập.
  • B. Khi có các vòng lặp lồng nhau.
  • C. Khi chương trình có nhiều nhánh rẽ.
  • D. Khi chương trình sử dụng đệ quy.

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

  • A. Thuật toán sắp xếp trộn (merge sort)
  • B. Thuật toán tìm kiếm nhị phân
  • C. Thuật toán vét cạn giải bài toán người bán hàng (TSP)
  • D. Thuật toán Dijkstra tìm đường đi ngắn nhất

Câu 19: Để so sánh hiệu quả của hai thuật toán, một có độ phức tạp O(n^2) và một có độ phức tạp O(n log n), khi kích thước đầu vào n rất lớn, thuật toán nào sẽ hiệu quả hơn?

  • A. Thuật toán có độ phức tạp O(n^2)
  • B. Thuật toán có độ phức tạp O(n log n)
  • 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 20: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian của thuật toán lại quan trọng?

  • A. Để viết code ngắn gọn hơn.
  • B. Để chương trình dễ đọc hơn.
  • C. Để đảm bảo chương trình chạy đúng.
  • D. Để lựa chọn thuật toán hiệu quả cho dữ liệu lớn và dự đoán hiệu suất chương trình khi mở rộng.

Câu 21: Cho hàm đệ quy tính giai thừa:

```
function factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
```
Độ phức tạp thời gian của hàm này là:

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

Câu 22: Độ phức tạp thời gian của thuật toán sắp xếp nhanh (quick sort) trong trường hợp trung bình là:

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

Câu 23: Một thuật toán có độ phức tạp O(2^n) được coi là:

  • A. Hiệu quả cao
  • B. Hiệu quả trung bình
  • C. Chấp nhận được với đầu vào nhỏ
  • D. Kém hiệu quả và không khả thi với đầu vào lớn

Câu 24: Để giảm độ phức tạp thời gian từ O(n^2) xuống O(n log n), kỹ thuật thiết kế thuật toán nào thường được sử dụng?

  • A. Chia để trị (Divide and Conquer)
  • B. Quy hoạch động (Dynamic Programming)
  • C. Tham lam (Greedy)
  • D. Duyệt vét cạn (Brute Force)

Câu 25: Xét thuật toán tìm kiếm tuyến tính trong mảng chưa sắp xếp. Độ phức tạp thời gian trung bình là:

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

Câu 26: Trong phân tích độ phức tạp, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua trong ký hiệu Big O. Tại sao?

  • 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 đầu vào nhỏ.
  • C. Vì Big O mô tả tốc độ tăng trưởng tiệm cận của thời gian chạy khi kích thước đầu vào rất lớn.
  • D. Vì chúng khó tính toán chính xác.

Câu 27: Nếu một thuật toán có độ phức tạp O(n log n) và một thuật toán khác có độ phức tạp O(n^(1.5)), với n lớn, thuật toán nào chạy nhanh hơn?

  • A. Thuật toán có độ phức tạp O(n log n)
  • B. Thuật toán có độ phức tạp O(n^(1.5))
  • C. Cả hai thuật toán chạy nhanh như nhau
  • D. Không thể xác định nếu không biết giá trị n cụ thể

Câu 28: Để xác định độ phức tạp thời gian thực nghiệm của một chương trình, phương pháp nào thường được sử dụng?

  • A. Phân tích code tĩnh
  • B. Đo thời gian chạy chương trình với các kích thước đầu vào khác nhau
  • C. Sử dụng hệ thức đệ quy
  • D. Áp dụng quy tắc cộng và nhân

Câu 29: Trong các thuật toán sắp xếp, thuật toán nào có độ phức tạp thời gian tốt nhất trong trường hợp xấu nhất?

  • A. Sắp xếp chèn (insertion sort)
  • B. Sắp xếp nổi bọt (bubble sort)
  • C. Sắp xếp nhanh (quick sort)
  • D. Sắp xếp trộn (merge sort)

Câu 30: Giả sử bạn cần chọn thuật toán để xử lý một lượng lớn dữ liệu (n > 1 triệu). Độ phức tạp thời gian nào sau đây là phù hợp nhất để đảm bảo hiệu suất chấp nhận được?

  • A. O(n^2)
  • B. O(n log n)
  • 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ộ đề 6

Câu 1: Trong phân tích độ phức tạp thời gian thuật toán, ký hiệu Big O thường được sử dụng để mô tả đ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ộ đề 6

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

```
for i = 1 to n:
for j = 1 to m:
thực hiện thao tác O(1)
```

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

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ộ đề 6

Câu 3: Quy tắc cộng trong phân tích độ phức tạp thời gian phát biểu rằng, nếu một chương trình gồm hai phần thực hiện tuần tự với độ phức tạp lần lượt là O(f(n)) và O(g(n)), thì độ phức tạp tổng thể của chương trình là:

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ộ đề 6

Câu 4: Thuật toán tìm kiếm nhị phân (binary search) có độ phức tạp thời gian là O(log n). Điều này có nghĩa là:

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ộ đề 6

Câu 5: Xét một thuật toán có độ phức tạp thời gian O(n^3). 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?

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ộ đề 6

Câu 6: Trong các độ phức tạp thời gian sau, độ phức tạp nào là hiệu quả nhất cho một thuật toán xử lý dữ liệu 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ộ đề 6

Câu 7: Cho hai đoạn chương trình A và B thực hiện nối tiếp nhau. Đoạn A có độ phức tạp O(n log n) và đoạ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 là:

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ộ đề 6

Câu 8: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp:

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ộ đề 6

Câu 9: Trong trường hợp nào, độ phức tạp thời gian của thuật toán sắp xếp chèn (insertion sort) là O(n^2)?

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ộ đề 6

Câu 10: Để tính độ phức tạp thời gian của một hàm đệ quy, phương pháp nào thường được sử dụng?

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ộ đề 6

Câu 11: Cho thuật toán tìm kiếm tuần tự (linear search) trong một danh sách có n phần tử. Trong trường hợp tốt nhất, độ phức tạp thời gian là bao nhiêu?

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ộ đề 6

Câu 12: Trong phân tích độ phức tạp thuật toán, chúng ta thường quan tâm đến trường hợp nào nhất?

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ộ đề 6

Câu 13: Giả sử bạn có một thuật toán với độ phức tạp O(n log n). Nếu bạn tăng kích thước đầu vào từ 1000 lên 10000 (gấp 10 lần), thời gian chạy dự kiến sẽ tăng lên khoảng bao nhiê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ộ đề 6

Câu 14: Độ phức tạp thời gian của thuật toán sắp xếp nổi bọt (bubble sort) trong trường hợp trung bình là:

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ộ đề 6

Câu 15: Trong các độ phức tạp sau, độ phức tạp nào thể hiện tốc độ tăng trưởng thời gian chạy chậm nhất khi kích thước đầu vào tăng lên rất lớ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ộ đề 6

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

```
for i = 1 to n:
j = 1
while j < n: j = j * 2 thực hiện thao tác O(1) ``` Độ phức tạp thời gian của đoạn mã này là:

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ộ đề 6

Câu 17: Quy tắc nhân trong phân tích độ phức tạp thời gian áp dụng khi 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ộ đề 6

Câu 18: Độ phức tạp O(n!) thường xuất hiện trong 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ộ đề 6

Câu 19: Để so sánh hiệu quả của hai thuật toán, một có độ phức tạp O(n^2) và một có độ phức tạp O(n log n), khi kích thước đầu vào n rất lớn, thuật toán nào sẽ hiệu quả hơ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ộ đề 6

Câu 20: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian của thuật toán lại quan trọ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ộ đề 6

Câu 21: Cho hàm đệ quy tính giai thừa:

```
function factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
```
Độ phức tạp thời gian của hàm này là:

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ộ đề 6

Câu 22: Độ phức tạp thời gian của thuật toán sắp xếp nhanh (quick sort) trong trường hợp trung bình là:

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ộ đề 6

Câu 23: Một thuật toán có độ phức tạp O(2^n) được coi là:

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ộ đề 6

Câu 24: Để giảm độ phức tạp thời gian từ O(n^2) xuống O(n log n), kỹ thuật thiết kế thuật toán nào thường được sử dụ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ộ đề 6

Câu 25: Xét thuật toán tìm kiếm tuyến tính trong mảng chưa sắp xếp. Độ phức tạp thời gian trung bình là:

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ộ đề 6

Câu 26: Trong phân tích độ phức tạp, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua trong ký hiệu Big O. 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ộ đề 6

Câu 27: Nếu một thuật toán có độ phức tạp O(n log n) và một thuật toán khác có độ phức tạp O(n^(1.5)), với n lớn, thuật toán nào chạy nhanh hơ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ộ đề 6

Câu 28: Để xác định độ phức tạp thời gian thực nghiệm của một chương trình, phương pháp nào thường được sử dụ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ộ đề 6

Câu 29: Trong các thuật toán sắp xếp, thuật toán nào có độ phức tạp thời gian tốt nhất trong 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ộ đề 6

Câu 30: Giả sử bạn cần chọn thuật toán để xử lý một lượng lớn dữ liệu (n > 1 triệu). Độ phức tạp thời gian nào sau đây là phù hợp nhất để đảm bảo hiệu suất chấp nhận được?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Độ phức tạp thời gian của một thuật toán mô tả điều gì?

  • A. Thời gian thực tế cần thiết để thuật toán chạy trên một máy tính cụ thể.
  • B. Sự tăng trưởng của thời gian chạy thuật toán khi kích thước đầu vào tăng lên.
  • C. Số lượng dòng mã lệnh trong thuật toán.
  • D. Dung lượng bộ nhớ mà thuật toán sử dụng.

Câu 2: Ký hiệu Big O, thường được sử dụng để biểu diễn độ phức tạp thời gian, tập trung vào trường hợp nào?

  • A. Trường hợp trung bình của thời gian chạy.
  • B. Trường hợp tốt nhất của thời gian chạy.
  • C. Trường hợp xấu nhất của thời gian chạy.
  • D. Thời gian chạy khi kích thước đầu vào là nhỏ nhất.

Câu 3: Thuật toán nào sau đây có độ phức tạp thời gian tốt nhất?

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

Câu 4: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?

```
for i in range(n):
print(i)
```

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

Câu 5: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?

```
for i in range(n):
for j in range(n):
print(i, j)
```

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

Câu 6: Quy tắc nào được sử dụng để tính độ phức tạp thời gian khi các đoạn mã thực hiện tuần tự (nối tiếp nhau)?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Quy tắc chia
  • D. Quy tắc lũy thừa

Câu 7: Quy tắc nào được sử dụng để tính độ phức tạp thời gian khi các đoạn mã thực hiện lồng nhau (ví dụ, vòng lặp bên trong vòng lặp)?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Quy tắc chia
  • D. Quy tắc logarit

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

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

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

  • A. Sắp xếp trộn (Merge Sort)
  • B. Sắp xếp chọn (Selection Sort)
  • C. Sắp xếp nhanh (Quick Sort)
  • D. Sắp xếp Heap (Heap Sort)

Câu 10: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp gì?

  • A. Độ phức tạp tuyến tính
  • B. Độ phức tạp logarit
  • C. Độ phức tạp bậc hai
  • D. Độ phức tạp hằng số

Câu 11: Cho đoạn mã sau, với đầu vào là một mảng có kích thước n. Độ phức tạp thời gian của đoạn mã này là gì?

```
sum = 0
for x in array:
sum += x
return sum
```

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

Câu 12: Độ phức tạp thời gian nào sau đây là hiệu quả nhất khi kích thước đầu vào n tăng lên rất lớn?

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

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

  • A. Thời gian chạy không đổi.
  • B. Thời gian chạy tăng gấp đôi.
  • C. Thời gian chạy tăng gấp bốn.
  • D. Thời gian chạy tăng hơn gấp đôi một chút.

Câu 14: Cho hàm tìm kiếm tuyến tính trên một mảng chưa sắp xếp có n phần tử. Trong trường hợp xấu nhất, độ phức tạp thời gian là bao nhiêu?

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

Câu 15: Cho hàm tìm kiếm nhị phân trên một mảng đã sắp xếp có n phần tử. Trong trường hợp xấu nhất, độ phức tạp thời gian là bao nhiêu?

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

Câu 16: Độ phức tạp thời gian O(n!) thường liên quan đến loại thuật toán nào?

  • A. Thuật toán sắp xếp tối ưu
  • B. Thuật toán tìm kiếm đồ thị
  • C. Thuật toán chia để trị
  • D. Thuật toán duyệt toàn bộ (Brute-force) các hoán vị

Câu 17: Trong phân tích độ phức tạp thời gian, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua. Tại sao?

  • A. Vì chúng không ảnh hưởng đến thời gian chạy thực tế.
  • B. Vì chúng làm cho phân tích trở nên phức tạp hơn.
  • C. Vì khi kích thước đầu vào n rất lớn, các số hạng bậc cao chi phối sự tăng trưởng thời gian.
  • D. Vì các trình biên dịch tự động tối ưu hóa chúng.

Câu 18: Thuật toán sắp xếp nào sau đây có độ phức tạp trung bình là O(n log n)?

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

Câu 19: Độ phức tạp thời gian O(2^n) thường liên quan đến loại thuật toán nào?

  • A. Thuật toán tìm đường đi ngắn nhất
  • B. Thuật toán đệ quy giải bài toán Tháp Hà Nội
  • C. Thuật toán sắp xếp mảng lớn
  • D. Thuật toán tìm kiếm tuần tự

Câu 20: Để cải thiện độ phức tạp thời gian của một thuật toán, biện pháp nào sau đây thường được áp dụng?

  • A. Tăng tốc độ xung nhịp của CPU.
  • B. Tăng dung lượng bộ nhớ RAM.
  • C. Sử dụng cấu trúc dữ liệu và thuật toán hiệu quả hơn.
  • D. Viết mã bằng ngôn ngữ lập trình khác.

Câu 21: Xét thuật toán tìm kiếm tuyến tính trong mảng đã sắp xếp. Mặc dù mảng đã sắp xếp, độ phức tạp thời gian trường hợp xấu nhất vẫn là O(n). Đúng hay Sai?

  • A. Đúng
  • B. Sai
  • C. Không thể xác định
  • D. Chỉ đúng với mảng kích thước nhỏ

Câu 22: Cho đoạn mã sau, giả sử `is_prime(num)` có độ phức tạp O(sqrt(num)). Độ phức tạp thời gian của đoạn mã là bao nhiêu?

```
count = 0
for i in range(n):
if is_prime(i):
count += 1
```

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

Câu 23: Độ phức tạp thời gian nào sau đây thể hiện sự tăng trưởng chậm nhất khi kích thước đầu vào tăng lên?

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

Câu 24: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian lại quan trọng?

  • A. Để đảm bảo mã nguồn ngắn gọn.
  • B. Để làm cho mã nguồn dễ đọc hơn.
  • C. Để giảm dung lượng bộ nhớ sử dụng.
  • D. Để lựa chọn thuật toán hiệu quả, đặc biệt khi xử lý dữ liệu lớn.

Câu 25: Cho đoạn mã sau, với `n` là số lượng phần tử trong danh sách `data`. Độ phức tạp thời gian là gì?

```
min_val = data[0]
for val in data:
if val < min_val: min_val = val ```

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

Câu 26: Nếu 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), thuật toán nào hiệu quả hơn cho đầu vào lớn?

  • A. Thuật toán A (O(n))
  • B. Thuật toán B (O(n^2))
  • C. Cả hai thuật toán hiệu quả như nhau.
  • D. Không thể xác định nếu không biết kích thước đầu vào cụ thể.

Câu 27: Độ phức tạp thời gian của phép toán truy cập một phần tử trong mảng (ví dụ: `array[index]`) là bao nhiêu?

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

Câu 28: Cho đoạn mã sau, độ phức tạp thời gian là bao nhiêu?

```
i = 1
while i < n: i = i * 2 ```

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

Câu 29: Phát biểu nào sau đây là đúng về độ phức tạp thời gian?

  • A. Độ phức tạp thời gian phụ thuộc vào ngôn ngữ lập trình sử dụng.
  • B. Độ phức tạp thời gian là một ước tính lý thuyết về tốc độ tăng trưởng thời gian chạy theo kích thước đầu vào.
  • C. Độ phức tạp thời gian đo lường thời gian thực tế chạy chương trình trên máy tính.
  • D. Độ phức tạp thời gian không quan trọng đối với các chương trình nhỏ.

Câu 30: Nếu bạn cần sắp xếp một danh sách lớn các số nguyên, thuật toán sắp xếp nào có độ phức tạp thời gian tốt nhất trong trường hợp trung bình và trường hợp 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 nhanh (Quick Sort)
  • D. Sắp xếp trộn (Merge Sort)

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ộ đề 7

Câu 1: Độ phức tạp thời gian của một thuật toán mô tả đ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ộ đề 7

Câu 2: Ký hiệu Big O, thường được sử dụng để biểu diễn độ phức tạp thời gian, tập trung vào trường hợp 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ộ đề 7

Câu 3: Thuật toán nào sau đây có độ phức tạp thời gian tốt nhất?

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ộ đề 7

Câu 4: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?

```
for i in range(n):
print(i)
```

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ộ đề 7

Câu 5: Đoạn mã sau có độ phức tạp thời gian là bao nhiêu?

```
for i in range(n):
for j in range(n):
print(i, j)
```

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ộ đề 7

Câu 6: Quy tắc nào được sử dụng để tính độ phức tạp thời gian khi các đoạn mã thực hiện tuần tự (nối tiếp nhau)?

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ộ đề 7

Câu 7: Quy tắc nào được sử dụng để tính độ phức tạp thời gian khi các đoạn mã thực hiện lồng nhau (ví dụ, vòng lặp bên trong vòng lặp)?

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ộ đề 7

Câu 8: Độ phức tạp thời gian O(log n) thường xuất hiện trong thuật toán 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ộ đề 7

Câu 9: Độ phức tạp thời gian O(n^2) thường xuất hiện trong thuật toán sắp xếp 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ộ đề 7

Câu 10: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp 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ộ đề 7

Câu 11: Cho đoạn mã sau, với đầu vào là một mảng có kích thước n. Độ phức tạp thời gian của đoạn mã này là gì?

```
sum = 0
for x in array:
sum += x
return sum
```

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ộ đề 7

Câu 12: Độ phức tạp thời gian nào sau đây là hiệu quả nhất khi kích thước đầu vào n tăng lên rất lớ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ộ đề 7

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

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ộ đề 7

Câu 14: Cho hàm tìm kiếm tuyến tính trên một mảng chưa sắp xếp có n phần tử. Trong trường hợp xấu nhất, độ phức tạp thời gian 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ộ đề 7

Câu 15: Cho hàm tìm kiếm nhị phân trên một mảng đã sắp xếp có n phần tử. Trong trường hợp xấu nhất, độ phức tạp thời gian 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ộ đề 7

Câu 16: Độ phức tạp thời gian O(n!) thường liên quan đến loại thuật toán nà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ộ đề 7

Câu 17: Trong phân tích độ phức tạp thời gian, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua. Tại sao?

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ộ đề 7

Câu 18: Thuật toán sắp xếp nào sau đây có độ phức tạp trung bình là 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ộ đề 7

Câu 19: Độ phức tạp thời gian O(2^n) thường liên quan đến loại thuật toán 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ộ đề 7

Câu 20: Để cải thiện độ phức tạp thời gian của một thuật toán, biện pháp nào sau đây thường được áp dụ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ộ đề 7

Câu 21: Xét thuật toán tìm kiếm tuyến tính trong mảng đã sắp xếp. Mặc dù mảng đã sắp xếp, độ phức tạp thời gian trường hợp xấu nhất vẫn là O(n). Đúng hay Sai?

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ộ đề 7

Câu 22: Cho đoạn mã sau, giả sử `is_prime(num)` có độ phức tạp O(sqrt(num)). Độ phức tạp thời gian của đoạn mã là bao nhiêu?

```
count = 0
for i in range(n):
if is_prime(i):
count += 1
```

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ộ đề 7

Câu 23: Độ phức tạp thời gian nào sau đây thể hiện sự tăng trưởng chậm nhất khi kích thước đầu vào tăng 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ộ đề 7

Câu 24: Trong thực tế, tại sao việc phân tích độ phức tạp thời gian lại quan trọ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ộ đề 7

Câu 25: Cho đoạn mã sau, với `n` là số lượng phần tử trong danh sách `data`. Độ phức tạp thời gian là gì?

```
min_val = data[0]
for val in data:
if val < min_val: min_val = val ```

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ộ đề 7

Câu 26: Nếu 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), thuật toán nào hiệu quả hơn cho đầu vào lớ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ộ đề 7

Câu 27: Độ phức tạp thời gian của phép toán truy cập một phần tử trong mảng (ví dụ: `array[index]`) 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ộ đề 7

Câu 28: Cho đoạn mã sau, độ phức tạp thời gian là bao nhiêu?

```
i = 1
while i < n: i = i * 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ộ đề 7

Câu 29: Phát biểu nào sau đây là đúng về độ phức tạp thời gian?

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ộ đề 7

Câu 30: Nếu bạn cần sắp xếp một danh sách lớn các số nguyên, thuật toán sắp xếp nào có độ phức tạp thời gian tốt nhất trong trường hợp trung bình và trường hợp xấu nhất?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, yếu tố nào sau đây được xem xét là đơn vị thời gian cơ bản?

  • A. Thời gian thực thi tuyệt đối trên một máy tính cụ thể
  • B. Số lượng các phép toán cơ bản mà thuật toán thực hiện
  • C. Tổng thời gian CPU sử dụng để chạy chương trình
  • D. Kích thước bộ nhớ mà chương trình sử dụng

Câu 2: Cho đoạn chương trình sau:

```
for i in range(n):
print(i)
```

Độ phức tạp thời gian của đoạn chương trình này là bao nhiêu?

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

Câu 3: Quy tắc nào sau đây được sử dụng để xác định độ phức tạp thời gian của một chuỗi các lệnh tuần tự trong một chương trình?

  • A. Quy tắc cộng (Summation Rule)
  • B. Quy tắc nhân (Multiplication Rule)
  • C. Quy tắc chia (Division Rule)
  • D. Quy tắc lũy thừa (Exponentiation Rule)

Câu 4: Xét đoạn chương trình:

```
for i in range(n):
for j in range(m):
print(i + j)
```

Nếu `m` tỉ lệ thuận với `n` (ví dụ, m = 2n), độ phức tạp thời gian của đoạn chương trình này là:

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

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

  • A. Thuật toán duyệt tuần tự
  • B. Thuật toán có vòng lặp tuyến tính
  • C. Thuật toán chia để trị (Divide and Conquer)
  • D. Thuật toán sắp xếp nổi bọt (Bubble Sort)

Câu 6: Trong các độ phức tạp sau, độ phức tạp nào thể hiện hiệu suất tốt nhất khi kích thước đầu vào `n` tăng lên rất lớn?

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

Câu 7: Thuật toán tìm kiếm tuyến tính (Linear Search) trong mảng có độ phức tạp thời gian trung bình là bao nhiêu?

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

Câu 8: Độ phức tạp thời gian O(n!) thường liên quan đến loại bài toán nào?

  • A. Bài toán sắp xếp mảng
  • B. Bài toán tìm kiếm trong cây nhị phân cân bằng
  • C. Bài toán quy hoạch động
  • D. Bài toán liệt kê tất cả các hoán vị

Câu 9: Để tính độ phức tạp thời gian của hai vòng lặp lồng nhau, trong đó vòng ngoài chạy `n` lần và vòng trong chạy `log n` lần, ta sử dụng quy tắc nào?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Quy tắc lặp
  • D. Quy tắc tuyến tính

Câu 10: 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 tốt nhất, trung bình và xấu nhất là bao nhiêu?

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

Câu 11: Cho hàm sau:

```python
def tinh_tong(arr):
tong = 0
for x in arr:
tong += x
return tong
```

Nếu `arr` là một danh sách có `n` phần tử, độ phức tạp thời gian của hàm `tinh_tong` là:

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

Câu 12: Độ phức tạp thời gian nào sau đây là chấp nhận được cho một thuật toán xử lý dữ liệu lớn trong thời gian thực?

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

Câu 13: Trong 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 nhất để đánh giá giới hạn hiệu suất của thuật toán?

  • 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 điển hình (Typical-case)

Câu 14: Nếu 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à khi kích thước đầu vào `n` tăng gấp đôi, thời gian thực hiện sẽ tăng lên khoảng bao nhiêu lần?

  • A. Gấp đôi
  • B. Gấp bốn
  • C. Hơn gấp đôi nhưng ít hơn gấp bốn
  • D. Không thay đổi

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

```
function TimKiem(arr, target):
for each element in arr:
if element == target:
return true
return false
```

Độ phức tạp thời gian của thuật toán `TimKiem` là:

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

Câu 16: Độ phức tạp thời gian O(2^n) thường được gọi là độ phức tạp gì?

  • A. Độ phức tạp tuyến tính
  • B. Độ phức tạp đa thức
  • C. Độ phức tạp mũ
  • D. Độ phức tạp logarit

Câu 17: Trong các thuật toán sắp xếp sau, thuật toán nào 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 nhanh (Quick Sort)
  • C. Sắp xếp chọn (Selection Sort)
  • D. Sắp xếp nổi bọt (Bubble Sort)

Câu 18: Để so sánh hiệu quả của hai thuật toán, một có độ phức tạp O(n) và một có độ phức tạp O(n^2), thuật toán nào sẽ hiệu quả hơn cho dữ liệu đầu vào lớn?

  • A. Thuật toán O(n)
  • B. Thuật toán O(n^2)
  • C. Cả hai hiệu quả như nhau
  • D. Không thể xác định

Câu 19: Cho đoạn mã Python:

```python
def mystery_function(n):
count = 0
i = 1
while i < n: count += 1 i *= 2 return count ``` Độ phức tạp thời gian của `mystery_function` là:

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

Câu 20: Phát biểu nào sau đây là đúng về ký hiệu Big O?

  • A. Đo lường thời gian thực thi chính xác của thuật toán
  • B. Phụ thuộc vào ngôn ngữ lập trình và phần cứng
  • C. Chỉ áp dụng cho trường hợp tốt nhất của thuật toán
  • D. Mô tả tốc độ tăng trưởng tiệm cận của thời gian thực hiện theo kích thước đầu vào

Câu 21: Một thuật toán có độ phức tạp O(n^3). Nếu thời gian chạy của nó là 1 giây với n = 1000, thời gian chạy ước tính với n = 2000 sẽ là bao nhiêu?

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

Câu 22: Độ phức tạp thời gian O(n log n) tốt hơn độ phức tạp nào trong các lựa chọn sau đây khi `n` lớn?

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

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

```
function process(n):
if n <= 1: return for i from 1 to n: print(i) process(n/2) process(n/2) ``` Độ phức tạp thời gian của `process(n)` là:

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

Câu 24: Khi nào độ phức tạp thời gian của thuật toán sắp xếp chèn (Insertion Sort) đạt trường hợp tốt nhất?

  • A. Khi mảng đã được sắp xếp
  • B. Khi mảng sắp xếp ngược
  • C. Khi mảng chứa các phần tử giống nhau
  • D. Độ phức tạp không phụ thuộc vào đầu vào

Câu 25: Trong phân tích độ phức tạp thuật toán, hằng số và các hệ số bậc thấp thường bị bỏ qua. Tại sao?

  • A. Để đơn giản hóa việc tính toán
  • B. Vì chúng không ảnh hưởng đến hiệu suất thực tế
  • C. Vì chúng trở nên không đáng kể khi kích thước đầu vào lớn
  • D. Để làm cho thuật toán trông hiệu quả hơn

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

```
function calculate(n):
sum = 0
for i from 1 to n*n:
sum += i
return sum
```
Độ phức tạp thời gian của `calculate(n)` là:

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

Câu 27: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi `n` rất lớn?

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

Câu 28: Thuật toán tìm kiếm nhị phân (Binary Search) yêu cầu dữ liệu đầu vào phải có đặc điểm gì để đạt được độ phức tạp O(log n)?

  • A. Dữ liệu phải là số nguyên
  • B. Dữ liệu phải được sắp xếp
  • C. Dữ liệu phải là duy nhất
  • D. Không có yêu cầu đặc biệt

Câu 29: Nếu bạn có hai đoạn chương trình chạy tuần tự, đoạn thứ nhất có độ phức tạp O(n) và đoạn thứ hai có độ phức tạp O(n log n), độ phức tạp thời gian tổng cộng của cả chương trình là bao nhiêu?

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

Câu 30: Trong bối cảnh tối ưu hóa hiệu suất chương trình, hiểu biết về độ phức tạp thời gian giúp lập trình viên đưa ra quyết định nào?

  • A. Chọn ngôn ngữ lập trình phù hợp
  • B. Tăng tốc độ CPU của máy tính
  • C. Giảm dung lượng bộ nhớ sử dụng
  • D. Lựa chọn thuật toán và cấu trúc dữ liệu hiệu quả 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ộ đề 8

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, yếu tố nào sau đây được xem xét là đơn vị thời gian cơ bả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ộ đề 8

Câu 2: Cho đoạn chương trình sau:

```
for i in range(n):
print(i)
```

Độ phức tạp thời gian của đoạn chương trình này là bao nhiêu?

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ộ đề 8

Câu 3: Quy tắc nào sau đây được sử dụng để xác định độ phức tạp thời gian của một chuỗi các lệnh tuần tự trong một chương trình?

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ộ đề 8

Câu 4: Xét đoạn chương trình:

```
for i in range(n):
for j in range(m):
print(i + j)
```

Nếu `m` tỉ lệ thuận với `n` (ví dụ, m = 2n), độ phức tạp thời gian của đoạn chương trình này là:

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ộ đề 8

Câu 5: Độ phức tạp thời gian O(log n) thường xuất hiện trong loại thuật toán 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ộ đề 8

Câu 6: Trong các độ phức tạp sau, độ phức tạp nào thể hiện hiệu suất tốt nhất khi kích thước đầu vào `n` tăng lê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ộ đề 8

Câu 7: Thuật toán tìm kiếm tuyến tính (Linear Search) trong mảng có độ phức tạp thời gian trung bình là bao nhiêu?

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ộ đề 8

Câu 8: Độ phức tạp thời gian O(n!) thường liên quan đến loại bài toán 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ộ đề 8

Câu 9: Để tính độ phức tạp thời gian của hai vòng lặp lồng nhau, trong đó vòng ngoài chạy `n` lần và vòng trong chạy `log n` lần, ta sử dụng quy tắc 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ộ đề 8

Câu 10: 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 tốt nhất, trung bình và xấu nhất 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ộ đề 8

Câu 11: Cho hàm sau:

```python
def tinh_tong(arr):
tong = 0
for x in arr:
tong += x
return tong
```

Nếu `arr` là một danh sách có `n` phần tử, độ phức tạp thời gian của hàm `tinh_tong` là:

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ộ đề 8

Câu 12: Độ phức tạp thời gian nào sau đây là chấp nhận được cho một thuật toán xử lý dữ liệu lớn trong thời gian thực?

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ộ đề 8

Câu 13: Trong 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 nhất để đánh giá giới hạn hiệu suất của thuật toá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ộ đề 8

Câu 14: Nếu 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à khi kích thước đầu vào `n` tăng gấp đôi, thời gian thực hiện sẽ tăng lên khoảng bao nhiê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ộ đề 8

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

```
function TimKiem(arr, target):
for each element in arr:
if element == target:
return true
return false
```

Độ phức tạp thời gian của thuật toán `TimKiem` là:

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ộ đề 8

Câu 16: Độ phức tạp thời gian O(2^n) thường được gọi là độ phức tạp 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ộ đề 8

Câu 17: Trong các thuật toán sắp xếp sau, thuật toán nào có độ phức tạp thời gian trung bình là O(n log 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ộ đề 8

Câu 18: Để so sánh hiệu quả của hai thuật toán, một có độ phức tạp O(n) và một có độ phức tạp O(n^2), thuật toán nào sẽ hiệu quả hơn cho dữ liệu đầu vào 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ộ đề 8

Câu 19: Cho đoạn mã Python:

```python
def mystery_function(n):
count = 0
i = 1
while i < n: count += 1 i *= 2 return count ``` Độ phức tạp thời gian của `mystery_function` là:

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ộ đề 8

Câu 20: Phát biểu nào sau đây là đúng về ký hiệu Big O?

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ộ đề 8

Câu 21: Một thuật toán có độ phức tạp O(n^3). Nếu thời gian chạy của nó là 1 giây với n = 1000, thời gian chạy ước tính với n = 2000 sẽ 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ộ đề 8

Câu 22: Độ phức tạp thời gian O(n log n) tốt hơn độ phức tạp nào trong các lựa chọn sau đây khi `n` lớ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ộ đề 8

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

```
function process(n):
if n <= 1: return for i from 1 to n: print(i) process(n/2) process(n/2) ``` Độ phức tạp thời gian của `process(n)` là:

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ộ đề 8

Câu 24: Khi nào độ phức tạp thời gian của thuật toán sắp xếp chèn (Insertion Sort) đạt trường hợp tốt nhất?

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ộ đề 8

Câu 25: Trong phân tích độ phức tạp thuật toán, hằng số và các hệ số bậc thấp thường bị bỏ qua. Tại sao?

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ộ đề 8

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

```
function calculate(n):
sum = 0
for i from 1 to n*n:
sum += i
return sum
```
Độ phức tạp thời gian của `calculate(n)` là:

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ộ đề 8

Câu 27: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi `n` rất lớ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ộ đề 8

Câu 28: Thuật toán tìm kiếm nhị phân (Binary Search) yêu cầu dữ liệu đầu vào phải có đặc điểm gì để đạt được độ phức tạp O(log 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ộ đề 8

Câu 29: Nếu bạn có hai đoạn chương trình chạy tuần tự, đoạn thứ nhất có độ phức tạp O(n) và đoạn thứ hai có độ phức tạp O(n log n), độ phức tạp thời gian tổng cộng của cả chương trình 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ộ đề 8

Câu 30: Trong bối cảnh tối ưu hóa hiệu suất chương trình, hiểu biết về độ phức tạp thời gian giúp lập trình viên đưa ra quyết định nào?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Độ phức tạp thời gian của một thuật toán được định nghĩa là gì?

  • A. Lượng bộ nhớ máy tính mà thuật toán sử dụng.
  • B. Thời gian thực hiện thuật toán như một hàm của kích thước đầu vào.
  • C. Số lượng dòng mã lệnh trong thuật toán.
  • D. Tốc độ xử lý của máy tính khi chạy thuật toán.

Câu 2: Ký hiệu Big O thường được sử dụng để mô tả độ phức tạp thời gian nào của thuật toán?

  • A. Độ phức tạp thời gian tốt nhất (best-case).
  • B. Độ phức tạp thời gian trung bình (average-case).
  • C. Độ phức tạp thời gian xấu nhất (worst-case).
  • D. Độ phức tạp thời gian thực tế khi chạy trên máy tính cụ thể.

Câu 3: Thuật toán tìm kiếm tuyến tính (linear search) trong mảng 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(n)
  • C. O(log n)
  • D. O(n^2)

Câu 4: 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à bao nhiêu?

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

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

  • A. Thuật toán chia để trị (divide and conquer) như tìm kiếm nhị phân.
  • B. Thuật toán có vòng lặp tuyến tính.
  • C. Thuật toán có vòng lặp lồng nhau.
  • D. Thuật toán thực hiện một số lượng cố định các phép toán.

Câu 6: Nếu một thuật toán có độ phức tạp thời gian O(n^2), điều gì xảy ra với thời gian chạy khi kích thước đầu vào n tăng gấp đôi?

  • A. Thời gian chạy tăng gấp đôi.
  • B. Thời gian chạy tăng lên gấp 4 lần.
  • C. Thời gian chạy tăng lên khoảng 4 lần.
  • D. Thời gian chạy không thay đổi.

Câu 7: Quy tắc nào được sử dụng để tính độ phức tạp thời gian của hai đoạn chương trình thực hiện tuần tự?

  • A. Quy tắc nhân.
  • B. Quy tắc cộng.
  • C. Quy tắc chia.
  • D. Quy tắc lũy thừa.

Câu 8: Quy tắc nào được sử dụng để tính độ phức tạp thời gian của các vòng lặp lồng nhau?

  • A. Quy tắc nhân.
  • B. Quy tắc cộng.
  • C. Quy tắc chia.
  • D. Quy tắc logarit.

Câu 9: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp gì?

  • A. Độ phức tạp tuyến tính.
  • B. Độ phức tạp logarit.
  • C. Độ phức tạp hằng số.
  • D. Độ phức tạp đa thức.

Câu 10: Trong phân tích độ phức tạp thời gian, hằng số nhân (ví dụ: O(2n) ) thường được bỏ qua và đơn giản hóa thành O(n). Vì sao?

  • A. Vì hằng số nhân không ảnh hưởng đến thời gian chạy thực tế.
  • B. Vì hằng số nhân chỉ quan trọng với kích thước đầu vào nhỏ.
  • C. Vì hằng số nhân luôn bằng 1.
  • D. Vì Big O tập trung vào 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âu 11: Cho đoạn mã sau: `for i in range(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(n)
  • C. O(log n)
  • D. O(n^2)

Câu 12: Cho đoạn mã sau: `for i in range(n): for j in range(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(log n)
  • D. O(n^2)

Câu 13: So sánh độ phức tạp thời gian của O(n log n) và O(n^2). Thuật toán nào hiệu quả hơn cho kích thước đầu vào lớn?

  • A. O(n log n) hiệu quả hơn.
  • B. O(n^2) hiệu quả hơn.
  • C. Cả hai đều hiệu quả 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: Trong thuật toán tìm kiếm nhị phân, tại sao độ phức tạp thời gian là O(log n) thay vì O(n)?

  • A. Vì thuật toán luôn tìm thấy phần tử ở bước đầu tiên.
  • B. Vì thuật toán loại bỏ một nửa không gian tìm kiếm ở mỗi bước.
  • C. Vì thuật toán sử dụng ít bộ nhớ hơn.
  • D. Vì thuật toán được viết bằng ngôn ngữ lập trình hiệu quả.

Câu 15: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi kích thước đầu vào tăng lên rất lớn?

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

Câu 16: Để tính tổng các phần tử trong một mảng có n phần tử, độ phức tạp thời gian là bao nhiêu?

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

Câu 17: Độ phức tạp thời gian của thao tác truy cập một phần tử trong mảng (biết chỉ số) là bao nhiêu?

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

Câu 18: 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) và thuật toán B có độ phức tạp O(n log n). Thuật toán nào nên được ưu tiên sử dụng cho dữ liệu lớn?

  • A. Thuật toán A (O(n)).
  • B. Thuật toán B (O(n log n)).
  • C. Cả hai đều tương đương.
  • D. Không đủ thông tin để quyết định.

Câu 19: Khi phân tích độ phức tạp thời gian của một chương trình, chúng ta thường tập trung vào phép toán nào?

  • A. Phép gán.
  • B. Phép so sánh.
  • C. Phép toán chiếm nhiều thời gian nhất và lặp lại nhiều lần.
  • D. Tất cả các phép toán đều quan trọng như nhau.

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

  • A. Bài toán tìm kiếm trong mảng đã sắp xếp.
  • B. Bài toán sắp xếp mảng.
  • C. Bài toán tìm đường đi ngắn nhất.
  • D. Bài toán liệt kê tất cả các hoán vị của một tập hợp.

Câu 21: Cho hàm sau: `def function(n): if n <= 1: return 1 else: return function(n-1) + function(n-1)`. Độ phức tạp thời gian của hàm này là bao nhiêu?

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

Câu 22: Trong thuật toán sắp xếp trộn (merge sort), độ phức tạp thời gian là bao nhiêu?

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

Câu 23: Điều gì KHÔNG phải là yếu tố ảnh hưởng đến độ phức tạp thời gian của thuật toán?

  • A. Kích thước dữ liệu đầu vào.
  • B. Cấu trúc của thuật toán (vòng lặp, đệ quy...).
  • C. Ngôn ngữ lập trình được sử dụng.
  • D. Số lượng phép toán cơ bản.

Câu 24: Trong thực tế, tại sao việc hiểu độ phức tạp thời gian của thuật toán lại quan trọng?

  • A. Để chương trình chạy nhanh hơn trên máy tính hiện tại.
  • B. Để đảm bảo chương trình hiệu quả và có thể xử lý dữ liệu lớn trong tương lai.
  • C. Để làm cho mã nguồn ngắn gọn hơn.
  • D. Để tuân thủ các quy chuẩn lập trình.

Câu 25: Độ phức tạp thời gian nào sau đây là tốt nhất?

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

Câu 26: Khi nào độ phức tạp thời gian trung bình (average-case) khác biệt đáng kể so với độ phức tạp thời gian xấu nhất (worst-case)?

  • A. Khi thuật toán luôn chạy với thời gian cố định.
  • B. Khi độ phức tạp thời gian luôn là O(n).
  • C. Khi hiệu suất thuật toán thay đổi đáng kể tùy thuộc vào dữ liệu đầu vào cụ thể.
  • D. Khi thuật toán không có vòng lặp.

Câu 27: Cho đoạn mã: `for i in range(n): j = 1; while j < n: j *= 2; print(i, j)`. Độ phức tạp thời gian của đoạn mã này là?

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

Câu 28: Nếu độ phức tạp thời gian của một thuật toán là O(n^3), và thời gian chạy cho n=1000 là 1 giây, thì thời gian chạy dự kiến cho n=2000 là bao nhiêu?

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

Câu 29: Trong các thuật toán sắp xếp, thuật toán nào thường có độ phức tạp thời gian tốt nhất trong trường hợp trung bình?

  • 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 (Selection Sort)
  • D. Sắp xếp chèn (Insertion Sort)

Câu 30: Độ phức tạp không gian (space complexity) đo lường điều gì của thuật toán?

  • A. Lượng bộ nhớ mà thuật toán sử dụng như một hàm của kích thước đầu vào.
  • B. Thời gian thực hiện thuật toán.
  • C. Số lượng biến được sử dụng trong thuật toán.
  • D. Kích thước mã nguồn của 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ộ đề 9

Câu 1: Độ phức tạp thời gian của một thuật toán được định nghĩa 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ộ đề 9

Câu 2: Ký hiệu Big O thường được sử dụng để mô tả độ phức tạp thời gian nào 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ộ đề 9

Câu 3: Thuật toán tìm kiếm tuyến tính (linear search) trong mảng có độ phức tạp thời gian trong trường hợp xấu nhất 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ộ đề 9

Câu 4: 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à 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ộ đề 9

Câu 5: Độ phức tạp thời gian O(log n) thường xuất hiện trong loại thuật toán 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ộ đề 9

Câu 6: Nếu một thuật toán có độ phức tạp thời gian O(n^2), điều gì xảy ra với thời gian chạy khi kích thước đầu vào n tăng gấp đôi?

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ộ đề 9

Câu 7: Quy tắc nào được sử dụng để tính độ phức tạp thời gian của hai đoạn chương trình thực hiện tuần tự?

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ộ đề 9

Câu 8: Quy tắc nào được sử dụng để tính độ phức tạp thời gian của các vòng lặp lồng nhau?

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ộ đề 9

Câu 9: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp 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ộ đề 9

Câu 10: Trong phân tích độ phức tạp thời gian, hằng số nhân (ví dụ: O(2n) ) thường được bỏ qua và đơn giản hóa thành O(n). Vì sao?

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ộ đề 9

Câu 11: Cho đoạn mã sau: `for i in range(n): print(i)`. Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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ộ đề 9

Câu 12: Cho đoạn mã sau: `for i in range(n): for j in range(n): print(i, j)`. Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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ộ đề 9

Câu 13: So sánh độ phức tạp thời gian của O(n log n) và O(n^2). Thuật toán nào hiệu quả hơn cho kích thước đầu vào 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ộ đề 9

Câu 14: Trong thuật toán tìm kiếm nhị phân, tại sao độ phức tạp thời gian là O(log n) thay vì 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ộ đề 9

Câu 15: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi kích thước đầu vào tăng lên rất lớ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ộ đề 9

Câu 16: Để tính tổng các phần tử trong một mảng có n phần tử, độ phức tạp thời gian 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ộ đề 9

Câu 17: Độ phức tạp thời gian của thao tác truy cập một phần tử trong mảng (biết chỉ số) 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ộ đề 9

Câu 18: 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) và thuật toán B có độ phức tạp O(n log n). Thuật toán nào nên được ưu tiên sử dụng cho dữ liệu 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ộ đề 9

Câu 19: Khi phân tích độ phức tạp thời gian của một chương trình, chúng ta thường tập trung vào phép toán 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ộ đề 9

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

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ộ đề 9

Câu 21: Cho hàm sau: `def function(n): if n <= 1: return 1 else: return function(n-1) + function(n-1)`. Độ phức tạp thời gian của hà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ộ đề 9

Câu 22: Trong thuật toán sắp xếp trộn (merge sort), độ phức tạp thời gian 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ộ đề 9

Câu 23: Điều gì KHÔNG phải là yếu tố ảnh hưởng đến độ phức tạp thời gian của thuật toá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ộ đề 9

Câu 24: Trong thực tế, tại sao việc hiểu độ phức tạp thời gian của thuật toán lại quan trọ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ộ đề 9

Câu 25: Độ phức tạp thời gian nào sau đây là tốt nhất?

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ộ đề 9

Câu 26: Khi nào độ phức tạp thời gian trung bình (average-case) khác biệt đáng kể so với độ phức tạp thời gian xấu nhất (worst-case)?

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ộ đề 9

Câu 27: Cho đoạn mã: `for i in range(n): j = 1; while j < n: j *= 2; print(i, j)`. Độ phức tạp thời gian của đoạn mã này là?

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ộ đề 9

Câu 28: Nếu độ phức tạp thời gian của một thuật toán là O(n^3), và thời gian chạy cho n=1000 là 1 giây, thì thời gian chạy dự kiến cho n=2000 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ộ đề 9

Câu 29: Trong các thuật toán sắp xếp, thuật toán nào thường có độ phức tạp thời gian tốt nhất trong trường hợp trung bình?

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ộ đề 9

Câu 30: Độ phức tạp không gian (space complexity) đo lường điều gì của thuật toán?

Xem kết quả

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 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Độ phức tạp thời gian nào sau đây mô tả thời gian chạy của thuật toán tăng theo cấp số nhân khi kích thước đầu vào tăng lên?

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

Câu 2: Xét một thuật toán tìm kiếm nhị phân trên một mảng đã được sắp xếp có kích thước n. Trong trường hợp xấu nhất, số phép so sánh cần thực hiện là bao nhiêu?

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

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

```
for i = 1 to n:
for j = 1 to n:
thực hiện phép toán O(1)
```

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

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

Câu 4: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian tổng thể khi một thuật toán bao gồm hai bước thực hiện tuần tự, với độ phức tạp lần lượt là O(f(n)) và O(g(n))?

  • A. Quy tắc cộng
  • B. Quy tắc nhân
  • C. Quy tắc chia
  • D. Quy tắc lũy thừa

Câu 5: Thuật toán sắp xếp chèn (Insertion Sort) có độ phức tạp thời gian trung bình và trường hợp xấu nhất là bao nhiêu?

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

Câu 6: Một chương trình thực hiện các thao tác sau: đọc dữ liệu từ file (O(n)), sắp xếp dữ liệu bằng thuật toán Merge Sort (O(n log n)), và in kết quả (O(n)). Độ 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²)
  • C. O(n log n)
  • D. O(n³)

Câu 7: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp gì?

  • A. Độ phức tạp tuyến tính
  • B. Độ phức tạp logarit
  • C. Độ phức tạp đa thức
  • D. Độ phức tạp hằng số

Câu 8: Trong phân tích độ phức tạp thời gian, chúng ta thường tập trung vào trường hợp nào để đánh giá giới hạn trên của thời gian thực hiện thuật toán?

  • A. Trường hợp tốt nhất
  • B. Trường hợp xấu nhất
  • C. Trường hợp trung bình
  • D. Trường hợp điển hình

Câu 9: Cho một thuật toán có độ phức tạp thời gian O(n log n). Nếu kích thước đầu vào n tăng gấp đôi, thời gian thực hiện thuật toán sẽ tăng lên xấp xỉ bao nhiêu lần?

  • A. Gấp đôi
  • B. Gấp bốn
  • C. Hơn gấp đôi nhưng ít hơn gấp bốn
  • D. Không thay đổi

Câu 10: Độ phức tạp thời gian nào là hiệu quả nhất cho một thuật toán khi xử lý dữ liệu đầu vào lớn?

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

Câu 11: Xét hàm đệ quy tính số Fibonacci sau:

```
fibonacci(n):
if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) ``` Độ phức tạp thời gian của hàm này là bao nhiêu?

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

Câu 12: Để cải thiện độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (O(n)) trên một tập dữ liệu lớn, giải pháp thường được áp dụng là gì?

  • A. Tăng tốc độ CPU
  • B. Tối ưu hóa bộ nhớ cache
  • C. Sắp xếp dữ liệu và sử dụng tìm kiếm nhị phân
  • D. Sử dụng ngôn ngữ lập trình tốc độ cao hơn

Câu 13: Trong thuật toán sắp xếp nổi bọt (Bubble Sort), sau khi thực hiện xong vòng lặp ngoài thứ nhất, điều gì được đảm bảo?

  • A. Phần tử lớn nhất đã được đặt đúng vị trí cuối cùng
  • B. Mảng đã được sắp xếp hoàn toàn
  • C. Phần tử nhỏ nhất đã được đặt đúng vị trí đầu tiên
  • D. Một nửa mảng đã được sắp xếp

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

```
for i = 1 to n:
for j = i to n:
thực hiện phép toán O(1)
```

Độ phức tạp thời gian của đoạn mã này là:

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

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

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

Câu 16: Trong các độ phức tạp sau, độ phức tạp nào cho thấy thuật toán có khả năng mở rộng (scale) tốt nhất khi kích thước đầu vào tăng lên rất lớn?

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

Câu 17: 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 bước thực hiện tuần tự
  • B. Khi chọn bước có độ phức tạp lớn nhất
  • C. Khi có các vòng lặp lồng nhau
  • D. Khi độ phức tạp không đổi

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

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

Câu 19: Để tìm kiếm một phần tử trong một mảng chưa sắp xếp, thuật toán tìm kiếm tuyến tính có độ phức tạp thời gian là bao nhiêu trong trường hợp trung bình?

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

Câu 20: Khi phân tích độ phức tạp thời gian, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua. Tại sao?

  • A. Để đơn giản hóa tính toán
  • B. Vì chúng không đáng kể khi kích thước đầu vào n lớn
  • C. Vì chúng chỉ ảnh hưởng đến trường hợp tốt nhất
  • D. Vì chúng phụ thuộc vào ngôn ngữ lập trình

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

```
while (n > 1):
n = n / 2
thực hiện phép toán O(1)
```

Độ phức tạp thời gian của đoạn mã này là:

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

Câu 22: Trong thuật toán sắp xếp nhanh (Quick Sort), độ phức tạp thời gian trường hợp xấu nhất là bao nhiêu?

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

Câu 23: Khi nào thì độ phức tạp thời gian O(n!) (giai thừa) thường xuất hiện?

  • A. Trong thuật toán tìm kiếm nhị phân
  • B. Trong thuật toán sắp xếp trộn
  • C. Trong thuật toán tìm kiếm tuyến tính
  • D. Trong bài toán liệt kê tất cả các hoán vị

Câu 24: Để tính độ phức tạp thời gian của một chuỗi lệnh tuần tự, ta xác định độ phức tạp của từng lệnh và sau đó làm gì?

  • A. Tính trung bình cộng các độ phức tạp
  • B. Chọn độ phức tạp lớn nhất
  • C. Nhân các độ phức tạp với nhau
  • D. Chọn độ phức tạp nhỏ nhất

Câu 25: Một thuật toán có độ phức tạp O(n log n) được coi là hiệu quả hơn so với thuật toán có độ phức tạp O(n²) khi nào?

  • A. Với mọi kích thước đầu vào n
  • B. Khi n nhỏ
  • C. Khi n đủ lớn
  • D. Không bao giờ hiệu quả hơn

Câu 26: Trong thực tế, việc đánh giá độ 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. Lựa chọn thuật toán phù hợp và tối ưu hóa hiệu suất chương trình
  • B. Viết mã nguồn ngắn gọn hơn
  • C. Gỡ lỗi chương trình dễ dàng hơn
  • D. Tăng tính bảo mật của chương trình

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

```
for i = 1 to n:
j = 1
while (j < n): j = j * 2 thực hiện phép toán O(1) ``` Độ phức tạp thời gian của đoạn mã này là:

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

Câu 28: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất khi n rất lớn?

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

Câu 29: Trong thuật toán sắp xếp chọn (Selection Sort), số lượng phép so sánh phần tử 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 30: 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²) và thuật toán B có độ phức tạp O(n log n). Bạn nên chọn thuật toán nào khi kích thước đầu vào n rất lớn?

  • A. Thuật toán A, vì nó đơn giản hơn
  • B. Thuật toán A, vì độ phức tạp của nó dễ tính hơn
  • C. Thuật toán B, vì nó có độ phức tạp thời gian tốt hơn cho n lớn
  • D. Cả hai thuật toán đều có hiệu quả tương đương

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: Độ phức tạp thời gian nào sau đây mô tả thời gian chạy của thuật toán tăng theo cấp số nhân khi kích thước đầu vào tăng 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ộ đề 10

Câu 2: Xét một thuật toán tìm kiếm nhị phân trên một mảng đã được sắp xếp có kích thước n. Trong trường hợp xấu nhất, số phép so sánh cần thực hiện là bao nhiêu?

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: Cho đoạn mã giả sau:

```
for i = 1 to n:
for j = 1 to n:
thực hiện phép toán O(1)
```

Độ 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ộ đề 10

Câu 4: Quy tắc nào được sử dụng để xác định độ phức tạp thời gian tổng thể khi một thuật toán bao gồm hai bước thực hiện tuần tự, với độ phức tạp lần lượt là O(f(n)) và O(g(n))?

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: Thuật toán sắp xếp chèn (Insertion Sort) có độ phức tạp thời gian trung bình và trường hợp xấu nhất 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ộ đề 10

Câu 6: Một chương trình thực hiện các thao tác sau: đọc dữ liệu từ file (O(n)), sắp xếp dữ liệu bằng thuật toán Merge Sort (O(n log n)), và in kết quả (O(n)). Độ phức tạp thời gian tổng thể của chương trình này là bao nhiêu?

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: Độ phức tạp thời gian O(1) còn được gọi là độ phức tạp 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: Trong phân tích độ phức tạp thời gian, chúng ta thường tập trung vào trường hợp nào để đánh giá giới hạn trên của thời gian thực hiện 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ộ đề 10

Câu 9: Cho một thuật toán có độ phức tạp thời gian O(n log n). Nếu kích thước đầu vào n tăng gấp đôi, thời gian thực hiện thuật toán sẽ tăng lên xấp xỉ bao nhiêu lầ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: Độ phức tạp thời gian nào là hiệu quả nhất cho một thuật toán khi xử lý dữ liệu đầu vào 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ộ đề 10

Câu 11: Xét hàm đệ quy tính số Fibonacci sau:

```
fibonacci(n):
if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) ``` Độ phức tạp thời gian của hàm này là bao nhiêu?

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: Để cải thiện độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (O(n)) trên một tập dữ liệu lớn, giải pháp thường được áp dụng 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ộ đề 10

Câu 13: Trong thuật toán sắp xếp nổi bọt (Bubble Sort), sau khi thực hiện xong vòng lặp ngoài thứ nhất, điều gì được đảm bả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ộ đề 10

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

```
for i = 1 to n:
for j = i to n:
thực hiện phép toán O(1)
```

Độ phức tạp thời gian của đoạn mã này là:

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: Nếu một thuật toán có độ phức tạp O(n³), và thời gian chạy của nó là 1 giây với n = 1000. Ước tính thời gian chạy của thuật toán này khi 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ộ đề 10

Câu 16: Trong các độ phức tạp sau, độ phức tạp nào cho thấy thuật toán có khả năng mở rộng (scale) tốt nhất khi kích thước đầu vào tăng lên rất 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ộ đề 10

Câu 17: Quy tắc nhân trong phân tích độ phức tạp thời gian được áp dụng khi 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: Thuật toán nào sau đây có độ phức tạp thời gian trung bình là 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ộ đề 10

Câu 19: Để tìm kiếm một phần tử trong một mảng chưa sắp xếp, thuật toán tìm kiếm tuyến tính có độ phức tạp thời gian là bao nhiêu trong trường hợp trung bình?

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: Khi phân tích độ phức tạp thời gian, hằng số nhân và các số hạng bậc thấp thường bị bỏ qua. Tại sao?

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: Cho đoạn mã giả:

```
while (n > 1):
n = n / 2
thực hiện phép toán O(1)
```

Độ phức tạp thời gian của đoạn mã này là:

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: Trong thuật toán sắp xếp nhanh (Quick Sort), độ phức tạp thời gian 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: Khi nào thì độ phức tạp thời gian O(n!) (giai thừa) thường xuất hiệ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: Để tính độ phức tạp thời gian của một chuỗi lệnh tuần tự, ta xác định độ phức tạp của từng lệnh và sau đó làm 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ộ đề 10

Câu 25: Một thuật toán có độ phức tạp O(n log n) được coi là hiệu quả hơn so với thuật toán có độ phức tạp O(n²) khi nào?

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: Trong thực tế, việc đánh giá độ phức tạp thời gian của thuật toán giúp ích gì cho lập trình viê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ộ đề 10

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

```
for i = 1 to n:
j = 1
while (j < n): j = j * 2 thực hiện phép toán O(1) ``` Độ phức tạp thời gian của đoạn mã này là:

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: Độ phức tạp thời gian nào sau đây là kém hiệu quả nhất 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ộ đề 10

Câu 29: Trong thuật toán sắp xếp chọn (Selection Sort), số lượng phép so sánh phần tử trong trường hợp xấu nhấ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ộ đề 10

Câu 30: 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²) và thuật toán B có độ phức tạp O(n log n). Bạn nên chọn thuật toán nào khi kích thước đầu vào n rất lớn?

Xem kết quả