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

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, tại sao chúng ta thường quan tâm đến trường hợp xấu nhất (worst-case) thay vì trường hợp tốt nhất (best-case) hoặc trung bình (average-case)?

  • A. Vì trường hợp tốt nhất hiếm khi xảy ra trong thực tế.
  • B. Vì trường hợp trung bình quá khó để tính toán chính xác.
  • C. Vì trường hợp xấu nhất luôn là trường hợp nhanh nhất.
  • D. Vì trường hợp xấu nhất cho biết giới hạn trên về thời gian chạy, đảm bảo hiệu suất không bao giờ vượt quá mức đó.

Câu 2: Cho đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
sum = sum + i
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

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

Câu 3: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to n:
print(i * j)
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

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

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

  • A. Thời gian thực hiện tăng rất chậm khi kích thước mảng tăng.
  • B. Thời gian thực hiện tăng tuyến tính với kích thước mảng.
  • C. Thời gian thực hiện tăng nhanh chóng (bình phương) khi kích thước mảng tăng.
  • D. Thời gian thực hiện là hằng số, không phụ thuộc vào kích thước mảng.

Câu 5: Xét thuật toán Linear Search (tìm kiếm tuần tự) trên một mảng có n phần tử. Trong trường hợp tốt nhất, phần tử cần tìm nằm ở đâu?

  • A. Ở vị trí đầu tiên của mảng.
  • B. Ở vị trí cuối cùng của mảng.
  • C. Ở vị trí chính giữa của mảng.
  • D. Phần tử không tồn tại trong mảng.

Câu 6: Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán Linear Search trên mảng có n phần tử là gì?

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

Câu 7: Thuật toán sắp xếp Selection Sort (sắp xếp chọn) hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất trong phần chưa được sắp xếp của mảng và đưa nó về đúng vị trí. Độ phức tạp thời gian trong trường hợp xấu nhất của Selection Sort trên mảng n phần tử là gì?

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

Câu 8: Điều gì xảy ra với thời gian chạy của một thuật toán có độ phức tạp O(n^2) khi kích thước dữ liệu đầ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 gấp ba lần.
  • C. Thời gian chạy tăng gấp bốn lần.
  • D. Thời gian chạy không thay đổi đáng kể.

Câu 9: Cho đoạn mã giả sau:
```
count = 0
if condition:
for i from 1 to n:
count = count + 1
else:
count = 10
```
Với n rất lớn, độ phức tạp thời gian của đoạn mã này trong trường hợp xấu nhất là gì?

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

Câu 10: Thuật toán Bubble Sort (sắp xếp nổi bọt) có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Trường hợp tốt nhất của Bubble Sort xảy ra khi nào và độ phức tạp thời gian trong trường hợp đó là gì?

  • A. Khi mảng đã sắp xếp, O(n)
  • B. Khi mảng đã sắp xếp, O(1)
  • C. Khi mảng đảo ngược hoàn toàn, O(n)
  • D. Khi mảng đảo ngược hoàn toàn, O(n^2)

Câu 11: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 100:
print(i + j)
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

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

Câu 12: Một thuật toán có độ phức tạp thời gian là O(n log n). Nếu với n = 1000, thuật toán chạy mất 1 giây, ước tính thời gian chạy khi n = 1000000 (1 triệu) là bao nhiêu? (Gợi ý: log₂1000 ≈ 10, log₂1000000 ≈ 20)

  • A. 100 giây
  • B. 1000 giây
  • C. Khoảng 2000 giây
  • D. Khoảng 1000000 giây

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

  • A. Linear Search
  • B. Binary Search
  • C. Quick Sort (trường hợp trung bình)
  • D. Selection Sort

Câu 14: Khi so sánh hai thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2) cho cùng một bài toán, điều gì có khả năng xảy ra nhất khi kích thước dữ liệu đầu vào (n) rất lớn?

  • A. Thuật toán A sẽ chạy nhanh hơn đáng kể so với thuật toán B.
  • B. Thuật toán B sẽ chạy nhanh hơn đáng kể so với thuật toán A.
  • C. Cả hai thuật toán sẽ có thời gian chạy tương đương.
  • D. Kết quả phụ thuộc vào các hằng số ẩn trong ký hiệu Big O.

Câu 15: Cho đoạn mã giả sau:
```
for i from 1 to n/2:
print(i)
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

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

Câu 16: Cho đoạn mã giả sau:
```
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 theo ký hiệu Big O là gì?

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

Câu 17: Phát biểu nào sau đây là ĐÚNG về mối quan hệ giữa độ phức tạp thời gian O(n) và O(n^2)?

  • A. O(n^2) luôn hiệu quả hơn O(n).
  • B. O(n) hiệu quả hơn O(n^2) khi n đủ lớn.
  • C. Độ hiệu quả của chúng là như nhau.
  • D. O(n) chỉ hiệu quả hơn O(n^2) khi n rất nhỏ.

Câu 18: Khi phân tích một thuật toán, chúng ta thường bỏ qua các hằng số và các số hạng bậc thấp trong biểu thức thời gian chạy. Ví dụ, nếu thời gian chạy là 3n^2 + 5n + 10, tại sao chúng ta lại biểu diễn độ phức tạp là O(n^2)?

  • A. Vì hằng số và số hạng bậc thấp không ảnh hưởng đến thời gian chạy thực tế.
  • B. Vì việc tính toán chính xác thời gian chạy với tất cả các số hạng là quá phức tạp.
  • C. Vì khi n rất lớn, số hạng bậc cao nhất (n^2) là yếu tố chi phối đến sự tăng trưởng của thời gian chạy.
  • D. Vì ký hiệu Big O chỉ áp dụng cho các thuật toán có thời gian chạy là hàm đơn giản của n.

Câu 19: Một thuật toán thực hiện 1000 phép tính độc lập với kích thước đầu vào n. Độ phức tạp thời gian của thuật toán này là gì?

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

Câu 20: Cho đoạn mã giả sau:
```
result = 0
for i from 1 to n:
for j from 1 to i:
result = result + 1
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

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

Câu 21: Thuật toán nào sau đây thường được coi là hiệu quả nhất (có độ phức tạp thấp nhất) trong việc tìm kiếm một phần tử trong một mảng đã được sắp xếp?

  • A. Linear Search
  • B. Binary Search
  • C. Selection Sort (để tìm min/max)
  • D. Bubble Sort

Câu 22: Một thuật toán có độ phức tạp O(log n). Điều này thường xuất hiện trong các thuật toán nào?

  • A. Thuật toán duyệt qua tất cả các cặp phần tử.
  • B. Thuật toán duyệt qua tất cả các phần tử một lần.
  • C. Thuật toán liên tục chia đôi phạm vi tìm kiếm/xử lý.
  • D. Thuật toán thực hiện một số lượng phép tính cố định.

Câu 23: Giả sử một thuật toán sắp xếp có độ phức tạp O(n log n). Nếu với n = 1000, thuật toán chạy mất 1 giây. Ước tính thời gian chạy khi n = 2000 là bao nhiêu?

  • A. Khoảng 1.5 giây
  • B. Khoảng 2 giây
  • C. Khoảng 2.2 giây
  • D. Khoảng 4 giây

Câu 24: Cho đoạn mã giả sau:
```
count = 0
for i from 1 to n:
for j from 1 to i * i:
count = count + 1
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

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

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

  • A. Để đánh giá hiệu suất của thuật toán khi xử lý dữ liệu lớn và so sánh các thuật toán khác nhau.
  • B. Để biết chính xác thời gian chạy trên một máy tính cụ thể.
  • C. Để tìm ra lỗi (bug) trong chương trình.
  • D. Để biết số dòng mã trong thuật toán.

Câu 26: Cho đoạn mã giả sau:
```
function process(n):
if n <= 10: print(

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

Câu 27: Thuật toán Bubble Sort (sắp xếp nổi bọt) và Selection Sort (sắp xếp chọn) đều có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Tuy nhiên, trong thực tế, thuật toán nào thường có xu hướng chạy nhanh hơn một chút trên các bộ dữ liệu ngẫu nhiên và tại sao?

  • A. Bubble Sort, vì nó có thể dừng sớm nếu mảng đã được sắp xếp hoặc gần sắp xếp.
  • B. Selection Sort, vì nó chỉ thực hiện n-1 phép đổi chỗ.
  • C. Cả hai đều có thời gian chạy thực tế hoàn toàn giống nhau.
  • D. Độ phức tạp O(n^2) nghĩa là chúng luôn chạy chậm như nhau.

Câu 28: Cho đoạn mã giả sau:
```
function process_array(arr):
n = length(arr)
if n > 1000:
for i from 1 to n:
print(arr[i])
else:
for i from 1 to n:
for j from 1 to n:
print(arr[i] + arr[j])
```
Độ phức tạp thời gian của hàm `process_array(arr)` theo ký hiệu Big O là gì?

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

Câu 29: Giả sử bạn có một bộ dữ liệu rất lớn và cần thực hiện một thao tác có độ phức tạp thời gian là O(n^3). Điều này có ý nghĩa gì về tính khả thi của việc chạy thuật toán này trên bộ dữ liệu đó?

  • A. Thuật toán có thể sẽ mất một lượng thời gian rất lớn và không khả thi để chạy trên bộ dữ liệu lớn.
  • B. Thuật toán sẽ chạy rất nhanh vì n^3 là một hàm tăng trưởng chậm.
  • C. Thời gian chạy sẽ chỉ tăng tuyến tính với kích thước dữ liệu.
  • D. Độ phức tạp O(n^3) chỉ áp dụng cho các bài toán nhỏ.

Câu 30: Trong phân tích độ phức tạp, đâu là ký hiệu Big O thể hiện hiệu suất tốt nhất (nhanh nhất khi n lớn)?

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

1 / 30

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

Tags: Bộ đề 01

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, tại sao chúng ta thường quan tâm đến trường hợp xấu nhất (worst-case) thay vì trường hợp tốt nhất (best-case) hoặc trung bình (average-case)?

2 / 30

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

Tags: Bộ đề 01

Câu 2: Cho đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
sum = sum + i
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

3 / 30

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

Tags: Bộ đề 01

Câu 3: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to n:
print(i * j)
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

4 / 30

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

Tags: Bộ đề 01

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

5 / 30

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

Tags: Bộ đề 01

Câu 5: Xét thuật toán Linear Search (tìm kiếm tuần tự) trên một mảng có n phần tử. Trong trường hợp tốt nhất, phần tử cần tìm nằm ở đâu?

6 / 30

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

Tags: Bộ đề 01

Câu 6: Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán Linear Search trên mảng có n phần tử là gì?

7 / 30

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

Tags: Bộ đề 01

Câu 7: Thuật toán sắp xếp Selection Sort (sắp xếp chọn) hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất trong phần chưa được sắp xếp của mảng và đưa nó về đúng vị trí. Độ phức tạp thời gian trong trường hợp xấu nhất của Selection Sort trên mảng n phần tử là gì?

8 / 30

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

Tags: Bộ đề 01

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

9 / 30

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

Tags: Bộ đề 01

Câu 9: Cho đoạn mã giả sau:
```
count = 0
if condition:
for i from 1 to n:
count = count + 1
else:
count = 10
```
Với n rất lớn, độ phức tạp thời gian của đoạn mã này trong trường hợp xấu nhất là gì?

10 / 30

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

Tags: Bộ đề 01

Câu 10: Thuật toán Bubble Sort (sắp xếp nổi bọt) có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Trường hợp tốt nhất của Bubble Sort xảy ra khi nào và độ phức tạp thời gian trong trường hợp đó là gì?

11 / 30

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

Tags: Bộ đề 01

Câu 11: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 100:
print(i + j)
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

12 / 30

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

Tags: Bộ đề 01

Câu 12: Một thuật toán có độ phức tạp thời gian là O(n log n). Nếu với n = 1000, thuật toán chạy mất 1 giây, ước tính thời gian chạy khi n = 1000000 (1 triệu) là bao nhiêu? (Gợi ý: log₂1000 ≈ 10, log₂1000000 ≈ 20)

13 / 30

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

Tags: Bộ đề 01

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

14 / 30

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

Tags: Bộ đề 01

Câu 14: Khi so sánh hai thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2) cho cùng một bài toán, điều gì có khả năng xảy ra nhất khi kích thước dữ liệu đầu vào (n) rất lớn?

15 / 30

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

Tags: Bộ đề 01

Câu 15: Cho đoạn mã giả sau:
```
for i from 1 to n/2:
print(i)
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

16 / 30

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

Tags: Bộ đề 01

Câu 16: Cho đoạn mã giả sau:
```
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 theo ký hiệu Big O là gì?

17 / 30

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

Tags: Bộ đề 01

Câu 17: Phát biểu nào sau đây là ĐÚNG về mối quan hệ giữa độ phức tạp thời gian O(n) và O(n^2)?

18 / 30

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

Tags: Bộ đề 01

Câu 18: Khi phân tích một thuật toán, chúng ta thường bỏ qua các hằng số và các số hạng bậc thấp trong biểu thức thời gian chạy. Ví dụ, nếu thời gian chạy là 3n^2 + 5n + 10, tại sao chúng ta lại biểu diễn độ phức tạp là O(n^2)?

19 / 30

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

Tags: Bộ đề 01

Câu 19: Một thuật toán thực hiện 1000 phép tính độc lập với kích thước đầu vào n. Độ phức tạp thời gian của thuật toán này là gì?

20 / 30

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

Tags: Bộ đề 01

Câu 20: Cho đoạn mã giả sau:
```
result = 0
for i from 1 to n:
for j from 1 to i:
result = result + 1
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

21 / 30

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

Tags: Bộ đề 01

Câu 21: Thuật toán nào sau đây thường được coi là hiệu quả nhất (có độ phức tạp thấp nhất) trong việc tìm kiếm một phần tử trong một mảng đã được sắp xếp?

22 / 30

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

Tags: Bộ đề 01

Câu 22: Một thuật toán có độ phức tạp O(log n). Điều này 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 01

Câu 23: Giả sử một thuật toán sắp xếp có độ phức tạp O(n log n). Nếu với n = 1000, thuật toán chạy mất 1 giây. Ước tính thời gian chạy khi n = 2000 là bao nhiêu?

24 / 30

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

Tags: Bộ đề 01

Câu 24: Cho đoạn mã giả sau:
```
count = 0
for i from 1 to n:
for j from 1 to i * i:
count = count + 1
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu Big O là gì?

25 / 30

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

Tags: Bộ đề 01

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

26 / 30

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

Tags: Bộ đề 01

Câu 26: Cho đoạn mã giả sau:
```
function process(n):
if n <= 10: print("Small") else: for i from 1 to n: print("Large") ``` Độ phức tạp thời gian của hàm `process(n)` theo ký hiệu Big O là gì?

27 / 30

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

Tags: Bộ đề 01

Câu 27: Thuật toán Bubble Sort (sắp xếp nổi bọt) và Selection Sort (sắp xếp chọn) đều có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Tuy nhiên, trong thực tế, thuật toán nào thường có xu hướng chạy nhanh hơn một chút trên các bộ dữ liệu ngẫu nhiên và tại sao?

28 / 30

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

Tags: Bộ đề 01

Câu 28: Cho đoạn mã giả sau:
```
function process_array(arr):
n = length(arr)
if n > 1000:
for i from 1 to n:
print(arr[i])
else:
for i from 1 to n:
for j from 1 to n:
print(arr[i] + arr[j])
```
Độ phức tạp thời gian của hàm `process_array(arr)` theo ký hiệu Big O là gì?

29 / 30

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

Tags: Bộ đề 01

Câu 29: Giả sử bạn có một bộ dữ liệu rất lớn và cần thực hiện một thao tác có độ phức tạp thời gian là O(n^3). Điều này có ý nghĩa gì về tính khả thi của việc chạy thuật toán này trên bộ dữ liệu đó?

30 / 30

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

Tags: Bộ đề 01

Câu 30: Trong phân tích độ phức tạp, đâu là ký hiệu Big O thể hiện hiệu suất tốt nhất (nhanh nhất khi n lớn)?

0

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

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


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

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

  • A. Lượng bộ nhớ mà thuật toán sử dụng.
  • B. Số lượng các phép tính cơ bản thực hiện theo kích thước dữ liệu đầu vào.
  • C. Tổng thời gian thực thi thực tế trên một máy tính cụ thể.
  • D. Mức độ dễ đọc và hiểu của mã nguồn thuật toán.

Câu 2: Ký hiệu Big O (ví dụ: O(n), O(n^2), O(log n)) trong phân tích độ phức tạp thời gian biểu thị điều gì?

  • A. Giới hạn trên (tốc độ tăng trưởng tối đa) của thời gian chạy khi kích thước đầu vào lớn.
  • B. Thời gian chạy chính xác của thuật toán trên mọi bộ dữ liệu.
  • C. Thời gian chạy trung bình của thuật toán.
  • D. Giới hạn dưới (tốc độ tăng trưởng tối thiểu) của thời gian chạy.

Câu 3: Xem xét đoạn mã giả sau:
```
function processArray(arr):
n = length(arr)
sum = 0
for i from 0 to n-1:
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 4: Xem xét đoạn mã giả sau:
```
function printPairs(arr):
n = length(arr)
for i from 0 to n-1:
for j from 0 to n-1:
print(arr[i], arr[j])
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 5: Xem xét đoạn mã giả sau:
```
function findMax(arr):
n = length(arr)
if n == 0:
return null
max_val = arr[0]
for i from 1 to n-1:
if arr[i] > max_val:
max_val = arr[i]
return max_val
```
Trong trường hợp xấu nhất, độ phức tạp thời gian của thuật toán tìm giá trị lớn nhất này là bao nhiêu?

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

Câu 6: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất (best-case) là bao nhiêu?

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

Câu 7: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp xấu nhất (worst-case) là bao nhiêu?

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

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

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

Câu 9: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

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

Câu 10: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất (best-case) là bao nhiêu?

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

Câu 11: Xem xét đoạn mã giả sau:
```
function example(n):
count = 0
for i from 1 to n:
for j from 1 to i:
count = count + 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 log n)
  • C. O(n^3)
  • D. O(n^2)

Câu 12: Xem xét đoạn mã giả sau:
```
function process(n):
k = 1
while k < n: print(k) k = k * 2 ``` Độ 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(log n)
  • D. O(1)

Câu 13: Giả sử thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2). Khi kích thước dữ liệu đầu vào n rất lớn, phát biểu nào sau đây là đúng nhất về hiệu suất của hai thuật toán?

  • A. Thuật toán A (O(n)) sẽ chạy nhanh hơn đáng kể so với thuật toán B (O(n^2)).
  • B. Thuật toán B (O(n^2)) sẽ chạy nhanh hơn đáng kể so với thuật toán A (O(n)).
  • C. Hai thuật toán sẽ có hiệu suất tương đương.
  • D. Không thể so sánh hiệu suất chỉ dựa vào ký hiệu Big O.

Câu 14: Nếu một thuật toán có độ phức tạp thời gian O(n^3) và mất 1 giây để xử lý dữ liệu có kích thước n=100. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=200 là bao nhiêu?

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

Câu 15: Nếu một thuật toán có độ phức tạp thời gian O(n) và mất 1 giây để xử lý dữ liệu có kích thước n=1000. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=10000 là bao nhiêu?

  • A. 1 giây
  • B. 5 giây
  • C. 50 giây
  • D. 10 giây

Câu 16: Trong phân tích độ phức tạp thời gian bằng ký hiệu Big O, khi biểu thức thời gian là một đa thức (ví dụ: 5n^2 + 3n + 10), ta chỉ giữ lại thành phần nào để xác định độ phức tạp?

  • A. Thành phần có hệ số lớn nhất.
  • B. Tất cả các thành phần và hệ số.
  • C. Thành phần có bậc (lũy thừa của n) cao nhất, bỏ qua hệ số.
  • D. Thành phần hằng số.

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

  • A. Chia đôi phạm vi tìm kiếm/xử lý (ví dụ: tìm kiếm nhị phân).
  • B. Duyệt qua tất cả các cặp phần tử trong mảng.
  • C. Duyệt qua từng phần tử một lần duy nhất.
  • D. Thực hiện một số lượng phép tính cố định, không phụ thuộc vào kích thước đầu vào.

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

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

Câu 19: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về tốc độ tăng trưởng khi n rất lớn: O(n^2), O(log n), O(n), O(1).

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

Câu 20: Tại sao việc phân tích độ phức tạp thời gian lại quan trọng trong lập trình, đặc biệt với các bài toán lớn?

  • A. Chỉ để so sánh các ngôn ngữ lập trình khác nhau.
  • B. Để biết chính xác thời gian chạy trên máy tính của bạn.
  • C. Để dự đoán hiệu suất (thời gian chạy) của thuật toán khi kích thước dữ liệu đầu vào trở nên rất lớn.
  • D. Để tìm lỗi cú pháp trong mã nguồn.

Câu 21: Một thuật toán bao gồm hai phần liên tiếp. Phần thứ nhất có độ phức tạp O(n^2), phần thứ hai có độ phức tạp O(n). Độ phức tạp thời gian tổng thể của thuật toán này là bao nhiêu?

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

Câu 22: Xem xét đoạn mã giả sau:
```
function anotherExample(n):
sum1 = 0
for i from 1 to n:
sum1 = sum1 + i
sum2 = 0
for j from 1 to n:
sum2 = sum2 + j*2
```
Độ 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(log n)
  • D. O(1)

Câu 23: Khi phân tích độ phức tạp thời gian của thuật toán sắp xếp chọn (Selection Sort), tại sao chúng ta thường nói độ phức tạp là O(n^2) cho cả trường hợp tốt nhất, trung bình và xấu nhất?

  • A. Số lượng phép so sánh và đổi chỗ luôn tỷ lệ với n^2, bất kể dữ liệu đầu vào.
  • B. Thuật toán có thể dừng sớm trong trường hợp tốt nhất.
  • C. Chỉ có trường hợp xấu nhất mới có độ phức tạp O(n^2).
  • D. Độ phức tạp trung bình là O(n log n).

Câu 24: Cho một đoạn mã có độ phức tạp thời gian là O(n). Nếu chạy đoạn mã này với n = 1000 mất 0.1 giây, ước tính thời gian chạy khi n = 5000 là bao nhiêu?

  • A. 0.1 giây
  • B. 0.25 giây
  • C. 0.5 giây
  • D. 1 giây

Câu 25: Xem xét đoạn mã giả sau:
```
function trickyLoop(n):
count = 0
i = 1
while i <= n: count = count + 1 i = i * 3 ``` Độ 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(sqrt(n))

Câu 26: Trong phân tích thuật toán, trường hợp "trung bình" (average-case) của độ phức tạp thời gian mô tả điều gì?

  • A. Thời gian chạy nhanh nhất có thể.
  • B. Thời gian chạy chậm nhất có thể.
  • C. Thời gian chạy trên một bộ dữ liệu đầu vào "điển hình" hoặc "ngẫu nhiên".
  • D. Thời gian chạy khi dữ liệu đã được sắp xếp.

Câu 27: Thuật toán nào trong số các thuật toán sắp xếp đơn giản sau đây có độ phức tạp thời gian tốt nhất trong trường hợp mảng đã được sắp xếp?

  • A. Bubble Sort
  • B. Selection Sort
  • C. Tất cả đều có O(n^2) trong trường hợp tốt nhất.
  • D. Không có thuật toán nào tốt hơn O(n log n) trong trường hợp tốt nhất.

Câu 28: Xem xét đoạn mã giả sau:
```
function processMatrix(matrix):
rows = matrix.height
cols = matrix.width
sum = 0
for i from 0 to rows-1:
for j from 0 to cols-1:
sum = sum + matrix[i][j]
```
Nếu ma trận có kích thước m x n (rows = m, cols = n), độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 29: Tại sao các hằng số và các thành phần bậc thấp hơn thường bị bỏ qua trong phân tích độ phức tạp Big O?

  • A. Vì chúng không đáng kể so với thành phần có bậc cao nhất khi n rất lớn.
  • B. Vì chúng chỉ ảnh hưởng đến trường hợp tốt nhất.
  • C. Vì chúng phụ thuộc vào tốc độ của máy tính cụ thể.
  • D. Vì chúng chỉ liên quan đến độ phức tạp không gian, không phải thời gian.

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

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

1 / 30

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

Tags: Bộ đề 02

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

2 / 30

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

Tags: Bộ đề 02

Câu 2: Ký hiệu Big O (ví dụ: O(n), O(n^2), O(log n)) trong phân tích độ phức tạp thời gian biểu thị điều gì?

3 / 30

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

Tags: Bộ đề 02

Câu 3: Xem xét đoạn mã giả sau:
```
function processArray(arr):
n = length(arr)
sum = 0
for i from 0 to n-1:
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

4 / 30

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

Tags: Bộ đề 02

Câu 4: Xem xét đoạn mã giả sau:
```
function printPairs(arr):
n = length(arr)
for i from 0 to n-1:
for j from 0 to n-1:
print(arr[i], arr[j])
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

5 / 30

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

Tags: Bộ đề 02

Câu 5: Xem xét đoạn mã giả sau:
```
function findMax(arr):
n = length(arr)
if n == 0:
return null
max_val = arr[0]
for i from 1 to n-1:
if arr[i] > max_val:
max_val = arr[i]
return max_val
```
Trong trường hợp xấu nhất, độ phức tạp thời gian của thuật toán tìm giá trị lớn nhất này là bao nhiêu?

6 / 30

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

Tags: Bộ đề 02

Câu 6: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất (best-case) là bao nhiêu?

7 / 30

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

Tags: Bộ đề 02

Câu 7: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp xấu nhất (worst-case) là bao nhiêu?

8 / 30

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

Tags: Bộ đề 02

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

9 / 30

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

Tags: Bộ đề 02

Câu 9: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?

10 / 30

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

Tags: Bộ đề 02

Câu 10: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất (best-case) là bao nhiêu?

11 / 30

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

Tags: Bộ đề 02

Câu 11: Xem xét đoạn mã giả sau:
```
function example(n):
count = 0
for i from 1 to n:
for j from 1 to i:
count = count + 1
```
Độ 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 12: Xem xét đoạn mã giả sau:
```
function process(n):
k = 1
while k < n: print(k) k = k * 2 ``` Độ 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 13: Giả sử thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2). Khi kích thước dữ liệu đầu vào n rất lớn, phát biểu nào sau đây là đúng nhất về hiệu suất của hai thuật toán?

14 / 30

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

Tags: Bộ đề 02

Câu 14: Nếu một thuật toán có độ phức tạp thời gian O(n^3) và mất 1 giây để xử lý dữ liệu có kích thước n=100. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=200 là bao nhiêu?

15 / 30

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

Tags: Bộ đề 02

Câu 15: Nếu một thuật toán có độ phức tạp thời gian O(n) và mất 1 giây để xử lý dữ liệu có kích thước n=1000. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=10000 là bao nhiêu?

16 / 30

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

Tags: Bộ đề 02

Câu 16: Trong phân tích độ phức tạp thời gian bằng ký hiệu Big O, khi biểu thức thời gian là một đa thức (ví dụ: 5n^2 + 3n + 10), ta chỉ giữ lại thành phần nào để xác định độ phức tạp?

17 / 30

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

Tags: Bộ đề 02

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

18 / 30

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

Tags: Bộ đề 02

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

19 / 30

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

Tags: Bộ đề 02

Câu 19: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về tốc độ tăng trưởng khi n rất lớn: O(n^2), O(log n), O(n), O(1).

20 / 30

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

Tags: Bộ đề 02

Câu 20: Tại sao việc phân tích độ phức tạp thời gian lại quan trọng trong lập trình, đặc biệt với các bài toán lớn?

21 / 30

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

Tags: Bộ đề 02

Câu 21: Một thuật toán bao gồm hai phần liên tiếp. Phần thứ nhất có độ phức tạp O(n^2), phần thứ hai có độ phức tạp O(n). Độ phức tạp thời gian tổng thể của thuật toán 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 22: Xem xét đoạn mã giả sau:
```
function anotherExample(n):
sum1 = 0
for i from 1 to n:
sum1 = sum1 + i
sum2 = 0
for j from 1 to n:
sum2 = sum2 + j*2
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

23 / 30

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

Tags: Bộ đề 02

Câu 23: Khi phân tích độ phức tạp thời gian của thuật toán sắp xếp chọn (Selection Sort), tại sao chúng ta thường nói độ phức tạp là O(n^2) cho cả trường hợp tốt nhất, trung bình và xấu nhất?

24 / 30

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

Tags: Bộ đề 02

Câu 24: Cho một đoạn mã có độ phức tạp thời gian là O(n). Nếu chạy đoạn mã này với n = 1000 mất 0.1 giây, ước tính thời gian chạy khi n = 5000 là bao nhiêu?

25 / 30

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

Tags: Bộ đề 02

Câu 25: Xem xét đoạn mã giả sau:
```
function trickyLoop(n):
count = 0
i = 1
while i <= n: count = count + 1 i = i * 3 ``` Độ 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 02

Câu 26: Trong phân tích thuật toán, trường hợp 'trung bình' (average-case) của độ phức tạp thời gian mô tả điều gì?

27 / 30

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

Tags: Bộ đề 02

Câu 27: Thuật toán nào trong số các thuật toán sắp xếp đơn giản sau đây có độ phức tạp thời gian tốt nhất trong trường hợp mảng đã được sắp xếp?

28 / 30

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

Tags: Bộ đề 02

Câu 28: Xem xét đoạn mã giả sau:
```
function processMatrix(matrix):
rows = matrix.height
cols = matrix.width
sum = 0
for i from 0 to rows-1:
for j from 0 to cols-1:
sum = sum + matrix[i][j]
```
Nếu ma trận có kích thước m x n (rows = m, cols = n), độ phức tạp thời gian của đoạn mã này là bao nhiêu?

29 / 30

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

Tags: Bộ đề 02

Câu 29: Tại sao các hằng số và các thành phần bậc thấp hơn thường bị bỏ qua trong phân tích độ phức tạp Big O?

30 / 30

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

Tags: Bộ đề 02

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

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

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến trường hợp nào nhất để đánh giá hiệu quả của nó với dữ liệu lớ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. Tất cả các trường hợp đều quan trọng như nhau

Câu 2: Cho đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
sum = sum + i
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là bao nhiêu?

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

Câu 3: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Nếu phần tử cần tìm nằm ở vị trí cuối cùng của mảng, thì độ phức tạp thời gian của thuật toán trong trường hợp này là gì?

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

Câu 4: Thuật toán sắp xếp chọn (Selection Sort) hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất trong phần chưa được sắp xếp của mảng và đưa nó về đúng vị trí. Tại sao thuật toán này có độ phức tạp thời gian là O(n^2) trong trường hợp xấu nhất?

  • A. Thuật toán sử dụng hai vòng lặp lồng nhau, mỗi vòng lặp chạy gần n lần.
  • B. Thuật toán chỉ cần một vòng lặp duy nhất chạy n lần.
  • C. Thuật toán chia mảng thành hai nửa trong mỗi bước.
  • D. Số lượng hoán đổi luôn là hằng số.

Câu 5: Cho hai thuật toán: Thuật toán A có độ phức tạp O(n^2) và Thuật toán B có độ phức tạp O(n log n). Khi kích thước dữ liệu n rất lớn, nhận định nào sau đây là đúng về hiệu quả thời gian chạy của hai thuật toán?

  • A. Thuật toán A sẽ chạy nhanh hơn Thuật toán B.
  • B. Thuật toán B sẽ chạy nhanh hơn Thuật toán A.
  • C. Thời gian chạy của cả hai thuật toán là tương đương nhau.
  • D. Không thể so sánh hiệu quả chỉ dựa vào độ phức tạp O lớn.

Câu 6: Độ 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 mảng đầu vào đã được sắp xếp hoàn toàn là gì?

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

Câu 7: Cho đoạn mã giả sau:
```
count = 0
for i from 1 to n:
for j from 1 to n:
count = count + 1
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 8: Ký hiệu O lớn (Big O notation) mô tả khía cạnh nào của hiệu quả thuật toán?

  • A. Thời gian thực hiện chính xác tính bằng mili giây.
  • B. Tốc độ tăng trưởng của thời gian thực hiện khi kích thước đầu vào tăng lên.
  • C. Số lượng dòng mã trong thuật toán.
  • D. Lượng bộ nhớ RAM mà thuật toán sử dụng.

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

  • A. Thời gian thực hiện tăng tuyến tính theo kích thước dữ liệu.
  • B. Thời gian thực hiện tăng theo hàm logarit của kích thước dữ liệu.
  • C. Thời gian thực hiện là 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 tăng theo bình phương của kích thước dữ liệu.

Câu 10: Giả sử thuật toán sắp xếp chọn (Selection Sort) mất 4 giây để sắp xếp một mảng có 2000 phần tử. Ước tính thời gian cần thiết để sắp xếp một mảng có 4000 phần tử bằng cùng thuật toán này là bao nhiêu?

  • A. 8 giây
  • B. 12 giây
  • C. 10 giây
  • D. 16 giây

Câu 11: Cho đoạn mã giả sau:
```
result = 0
i = 1
while i < n: result = result + 1 i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là bao nhiêu?

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

Câu 12: Khi so sánh thuật toán tìm kiếm tuần tự (Linear Search - O(n)) và thuật toán tìm kiếm nhị phân (Binary Search - O(log n)) trên một mảng đã sắp xếp, nhận định nào sau đây là đúng?

  • A. Tìm kiếm tuần tự luôn nhanh hơn tìm kiếm nhị phân.
  • B. Tìm kiếm nhị phân chỉ hiệu quả khi mảng chưa được sắp xếp.
  • C. Độ phức tạp của cả hai thuật toán là như nhau.
  • D. Tìm kiếm nhị phân hiệu quả hơn đáng kể so với tìm kiếm tuần tự khi n lớn (áp dụng cho mảng đã sắp xếp).

Câu 13: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from i to n:
// Thực hiện một phép toán cơ bản
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

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

  • A. Vì chúng không ảnh hưởng đáng kể đến tốc độ tăng trưởng của thời gian chạy khi kích thước đầu vào n rất lớn.
  • B. Vì chúng chỉ xuất hiện trong trường hợp tốt nhất của thuật toán.
  • C. Vì chúng chỉ liên quan đến không gian bộ nhớ, không phải thời gian.
  • D. Vì việc tính toán chúng là quá phức tạp.

Câu 15: Một thuật toán xử lý dữ liệu mất 0.1 giây với n=1000. Nếu thuật toán này có độ phức tạp O(n), ước tính nó sẽ mất bao lâu để xử lý n=10000?

  • A. 0.5 giây
  • B. 10 giây
  • C. 1 giây
  • D. 0.01 giây

Câu 16: Cho đoạn mã giả sau:
```
func(n):
if n <= 1: return 1 else: return func(n-1) + func(n-1) ``` (Đây là hàm tính số Fibonacci đệ quy không tối ưu). Độ phức tạp thời gian của hàm `func(n)` này là bao nhiêu?

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

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

  • A. Selection Sort
  • B. Merge Sort
  • C. Quick Sort
  • D. Binary Search (Đây là tìm kiếm, không phải sắp xếp)

Câu 18: Khi nói về độ phức tạp không gian (Space Complexity), O(n) nghĩa là gì?

  • A. Thời gian chạy tăng tuyến tính với n.
  • B. Lượng bộ nhớ phụ sử dụng tăng tuyến tính với n.
  • C. Thời gian chạy là hằng số.
  • D. Lượng bộ nhớ phụ sử dụng là hằng số.

Câu 19: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 100:
// Thực hiện một phép toán cơ bản
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 20: Thuật toán nào sau đây là ví dụ điển hình của độ phức tạp thời gian O(1)?

  • A. Tìm kiếm một phần tử trong danh sách liên kết.
  • B. Sắp xếp một mảng bằng Bubble Sort.
  • C. Duyệt qua tất cả các phần tử của một mảng.
  • D. Truy cập một phần tử tại một chỉ số cho trước trong mảng.

Câu 21: Một thuật toán được mô tả là có độ phức tạp thời gian O(n^3). Nếu thuật toán này mất 1 giây để xử lý dữ liệu có kích thước n=100, thì ước tính nó sẽ mất bao lâu để xử lý dữ liệu có kích thước n=200?

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

Câu 22: Điều gì xảy ra với hiệu quả của thuật toán sắp xếp nổi bọt (Bubble Sort - O(n^2)) khi kích thước dữ liệu đầu vào (n) tăng lên rất lớn?

  • A. Hiệu quả được cải thiện đáng kể.
  • B. Hiệu quả không thay đổi.
  • C. Hiệu quả giảm sút nhanh chóng.
  • D. Hiệu quả chỉ bị ảnh hưởng bởi các hằng số.

Câu 23: Đâu là lợi ích chính của việc phân tích độ phức tạp thời gian của thuật toán?

  • A. Xác định thời gian chạy chính xác trên một máy tính cụ thể.
  • B. Dự đoán hiệu quả của thuật toán trên dữ liệu lớn và so sánh các thuật toán khác nhau.
  • C. Tìm lỗi cú pháp trong mã nguồn.
  • D. Giảm số lượng dòng mã của thuật toán.

Câu 24: Cho đoạn mã giả sau:
```
for i from 1 to n:
// Thực hiện một phép toán cơ bản
for j from 1 to m:
// Thực hiện một phép toán cơ bản
```
Với giả định n và m là hai kích thước đầu vào độc lập, độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

Câu 25: Một thuật toán có độ phức tạp O(n log n). Nếu nó mất 0.5 giây để xử lý n=1000, ước tính thời gian xử lý cho n=20000 (tăng 20 lần) là bao nhiêu? (Gợi ý: log₂(1000) ≈ 10, log₂(20000) ≈ 14.3)

  • A. 10 giây
  • B. 14.3 giây
  • C. 20 giây
  • D. 5 giây

Câu 26: Đâu là yếu tố không được xem xét trực tiếp khi xác định độ phức tạp thời gian của thuật toán bằng ký hiệu O lớn?

  • A. Tốc độ xử lý của máy tính (GHz).
  • B. Kích thước dữ liệu đầu vào (n).
  • C. Số lượng vòng lặp lồng nhau.
  • D. Số lượng phép so sánh hoặc phép toán cơ bản tỷ lệ với n.

Câu 27: Trong thuật toán sắp xếp chọn (Selection Sort), số lượng phép hoán đổi (swap) được thực hiện trong trường hợp xấu nhất là bao nhiêu?

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

Câu 28: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to i:
// Thực hiện một phép toán cơ bản
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

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

  • A. Giảm thời gian thực hiện, đặc biệt khi xử lý dữ liệu lớn.
  • B. Làm cho mã nguồn dễ đọc và dễ hiểu hơn.
  • C. Giảm lượng bộ nhớ sử dụng bởi thuật toán.
  • D. Đảm bảo thuật toán luôn tìm ra đáp án chính xác.

Câu 30: Giả sử bạn có một danh sách N tên học sinh cần sắp xếp theo thứ tự bảng chữ cái. Nếu N rất lớn (ví dụ: vài triệu), thuật toán nào sau đây có khả năng là lựa chọn tốt nhất về mặt hiệu quả thời gian?

  • A. Bubble Sort (O(n^2))
  • B. Selection Sort (O(n^2))
  • C. Linear Search (O(n))
  • D. Merge Sort (O(n log n))

1 / 30

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

Tags: Bộ đề 03

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến trường hợp nào nhất để đánh giá hiệu quả của nó với dữ liệu lớn?

2 / 30

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

Tags: Bộ đề 03

Câu 2: Cho đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
sum = sum + i
```
Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớ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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 3: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Nếu phần tử cần tìm nằm ở vị trí cuối cùng của mảng, thì độ phức tạp thời gian của thuật toán trong trường hợp này là gì?

4 / 30

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

Tags: Bộ đề 03

Câu 4: Thuật toán sắp xếp chọn (Selection Sort) hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất trong phần chưa được sắp xếp của mảng và đưa nó về đúng vị trí. Tại sao thuật toán này có độ phức tạp thời gian là O(n^2) trong trường hợp xấu nhất?

5 / 30

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

Tags: Bộ đề 03

Câu 5: Cho hai thuật toán: Thuật toán A có độ phức tạp O(n^2) và Thuật toán B có độ phức tạp O(n log n). Khi kích thước dữ liệu n rất lớn, nhận định nào sau đây là đúng về hiệu quả thời gian chạy của hai thuật toán?

6 / 30

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

Tags: Bộ đề 03

Câu 6: Độ 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 mảng đầu vào đã được sắp xếp hoàn toàn là gì?

7 / 30

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

Tags: Bộ đề 03

Câu 7: Cho đoạn mã giả sau:
```
count = 0
for i from 1 to n:
for j from 1 to n:
count = count + 1
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

8 / 30

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

Tags: Bộ đề 03

Câu 8: Ký hiệu O lớn (Big O notation) mô tả khía cạnh nào của hiệu quả thuật toán?

9 / 30

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

Tags: Bộ đề 03

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

10 / 30

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

Tags: Bộ đề 03

Câu 10: Giả sử thuật toán sắp xếp chọn (Selection Sort) mất 4 giây để sắp xếp một mảng có 2000 phần tử. Ước tính thời gian cần thiết để sắp xếp một mảng có 4000 phần tử bằng cùng thuật toán này là bao nhiêu?

11 / 30

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

Tags: Bộ đề 03

Câu 11: Cho đoạn mã giả sau:
```
result = 0
i = 1
while i < n: result = result + 1 i = i * 2 ``` Độ phức tạp thời gian của đoạn mã này theo ký hiệu O lớn là bao nhiêu?

12 / 30

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

Tags: Bộ đề 03

Câu 12: Khi so sánh thuật toán tìm kiếm tuần tự (Linear Search - O(n)) và thuật toán tìm kiếm nhị phân (Binary Search - O(log n)) trên một mảng đã sắp xếp, nhận định nào sau đây là đúng?

13 / 30

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

Tags: Bộ đề 03

Câu 13: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from i to n:
// Thực hiện một phép toán cơ bản
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

14 / 30

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

Tags: Bộ đề 03

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

15 / 30

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

Tags: Bộ đề 03

Câu 15: Một thuật toán xử lý dữ liệu mất 0.1 giây với n=1000. Nếu thuật toán này có độ phức tạp O(n), ước tính nó sẽ mất bao lâu để xử lý n=10000?

16 / 30

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

Tags: Bộ đề 03

Câu 16: Cho đoạn mã giả sau:
```
func(n):
if n <= 1: return 1 else: return func(n-1) + func(n-1) ``` (Đây là hàm tính số Fibonacci đệ quy không tối ưu). Độ phức tạp thời gian của hàm `func(n)` 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

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

18 / 30

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

Tags: Bộ đề 03

Câu 18: Khi nói về độ phức tạp không gian (Space Complexity), O(n) nghĩa là gì?

19 / 30

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

Tags: Bộ đề 03

Câu 19: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 100:
// Thực hiện một phép toán cơ bản
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

20 / 30

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

Tags: Bộ đề 03

Câu 20: Thuật toán nào sau đây là ví dụ điển hình của độ phức tạp thời gian O(1)?

21 / 30

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

Tags: Bộ đề 03

Câu 21: Một thuật toán được mô tả là có độ phức tạp thời gian O(n^3). Nếu thuật toán này mất 1 giây để xử lý dữ liệu có kích thước n=100, thì ước tính nó sẽ mất bao lâu để xử lý dữ liệu có kích thước n=200?

22 / 30

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

Tags: Bộ đề 03

Câu 22: Điều gì xảy ra với hiệu quả của thuật toán sắp xếp nổi bọt (Bubble Sort - O(n^2)) khi kích thước dữ liệu đầu vào (n) tăng lên rất lớn?

23 / 30

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

Tags: Bộ đề 03

Câu 23: Đâu là lợi ích chính của việc phân tích độ 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 03

Câu 24: Cho đoạn mã giả sau:
```
for i from 1 to n:
// Thực hiện một phép toán cơ bản
for j from 1 to m:
// Thực hiện một phép toán cơ bản
```
Với giả định n và m là hai kích thước đầu vào độc lập, độ phức tạp thời gian của đoạn mã này là bao nhiêu?

25 / 30

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

Tags: Bộ đề 03

Câu 25: Một thuật toán có độ phức tạp O(n log n). Nếu nó mất 0.5 giây để xử lý n=1000, ước tính thời gian xử lý cho n=20000 (tăng 20 lần) là bao nhiêu? (Gợi ý: log₂(1000) ≈ 10, log₂(20000) ≈ 14.3)

26 / 30

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

Tags: Bộ đề 03

Câu 26: Đâu là yếu tố *không* được xem xét trực tiếp khi xác định độ phức tạp thời gian của thuật toán bằng ký hiệu O lớn?

27 / 30

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

Tags: Bộ đề 03

Câu 27: Trong thuật toán sắp xếp chọn (Selection Sort), số lượng phép hoán đổi (swap) được thực hiện trong trường hợp xấu nhất là bao nhiêu?

28 / 30

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

Tags: Bộ đề 03

Câu 28: Cho đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to i:
// Thực hiện một phép toán cơ bản
```
Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

29 / 30

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

Tags: Bộ đề 03

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

30 / 30

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

Tags: Bộ đề 03

Câu 30: Giả sử bạn có một danh sách N tên học sinh cần sắp xếp theo thứ tự bảng chữ cái. Nếu N rất lớn (ví dụ: vài triệu), thuật toán nào sau đây có khả năng là lựa chọn tốt nhất về mặt hiệu quả thời gian?

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

Câu 1: Xét đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
sum = sum + i
```
Đoạn mã này tính tổng các số từ 1 đến n. Độ phức tạp thời gian của đoạn mã này được biểu diễn bằng kí hiệu Big O nào?

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

Câu 2: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Trong trường hợp xấu nhất, phần tử cần tìm không có trong mảng. Độ phức tạp thời gian trong trường hợp này là bao nhiêu?

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

Câu 3: Một thuật toán có độ phức tạp thời gian là O(n^2). Nếu với đầu vào có kích thước n=1000, thuật toán chạy mất 1 giây, thì ước tính với đầu vào có kích thước n=2000, thuật toán sẽ chạy mất khoảng bao lâu?

  • A. 0.5 giây
  • B. 1 giây
  • C. 2 giây
  • D. 4 giây

Câu 4: Thuật toán sắp xếp chọn (Selection Sort) trên một mảng có kích thước n. Độ phức tạp thời gian của thuật toán này là bao nhiêu trong trường hợp trung bình?

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

Câu 5: Xét đoạn mã giả sau:
```
count = 0
for i from 1 to n:
for j from 1 to n:
count = count + 1
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 6: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Trong trường hợp mảng đã được sắp xếp từ trước (trường hợp tốt 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 log n)
  • C. O(n^2)
  • D. O(1)

Câu 7: Khi phân tích độ phức tạp thời gian của thuật toán, kí hiệu Big O (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.
  • B. Độ phức tạp trong trường hợp tốt nhất.
  • C. Giới hạn dưới (lower bound) của tốc độ tăng trưởng thời gian.
  • D. Giới hạn trên (upper bound) của tốc độ tăng trưởng thời gian (thường là trường hợp xấu nhất).

Câu 8: Một thuật toán có độ phức tạp O(log n). Điều này có ý nghĩa gì về hiệu suất của thuật toán khi kích thước đầu vào n tăng lên rất lớn?

  • 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 tăng rất chậm khi kích thước đầu vào tăng.
  • C. Thời gian chạy tăng theo bình phương kích thước đầu vào.
  • D. Thời gian chạy là hằng số, không phụ thuộc vào kích thước đầu vào.

Câu 9: Xét đoạn mã giả sau:
```
result = 0
for i from 1 to n:
for j from i to n:
result = result + 1
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

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

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

Câu 11: Thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có kích thước n. Độ phức tạp thời gian của thuật toán này là bao nhiêu?

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

Câu 12: So sánh hai thuật toán A (độ phức tạp O(n)) và thuật toán B (độ phức tạp O(n^2)). Với kích thước đầu vào n đủ lớn, thuật toán nào sẽ có hiệu suất tốt hơn (chạy nhanh hơn)?

  • A. Thuật toán A
  • B. Thuật toán B
  • C. Hiệu suất như nhau
  • D. Không thể so sánh nếu không biết hằng số

Câu 13: Xét đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 100:
// Thực hiện một phép tính O(1)
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 14: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Trong trường hợp xấu nhất (mảng sắp xếp ngược), độ phức tạp thời gian là bao nhiêu?

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

Câu 15: Khi phân tích độ phức tạp thời gian, tại sao chúng ta thường quan tâm đến trường hợp xấu nhất (worst-case) hơn là trường hợp tốt nhất (best-case)?

  • A. Trường hợp tốt nhất hiếm khi xảy ra.
  • B. Trường hợp tốt nhất thường có độ phức tạp O(1) nên không cần phân tích.
  • C. Trường hợp xấu nhất cung cấp giới hạn trên đáng tin cậy về hiệu suất.
  • D. Trường hợp trung bình khó xác định hơn.

Câu 16: Xét đoạn mã giả sau:
```
void process(int n) {
if (n <= 1) return; process(n/2); process(n/2); } ``` Đây là một hàm đệ quy. Độ phức tạp thời gian của hàm này là bao nhiêu?

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

Câu 17: Xét đoạn mã giả sau:
```
void do_something(int n) {
for i from 1 to n:
// Phép tính O(1)
for j from 1 to n:
// Phép tính O(1)
}
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 18: Một thuật toán mất 5ms để xử lý dữ liệu có kích thước n=100. Nếu độ phức tạp của thuật toán là O(n log n), ước tính thời gian xử lý cho dữ liệu có kích thước n=10000 sẽ là bao nhiêu?

  • A. 50 ms
  • B. 500 ms
  • C. 5 s
  • D. 1 s

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

  • A. Vì khi n rất lớn, số hạng bậc cao nhất chi phối tốc độ tăng trưởng.
  • B. Vì chúng không ảnh hưởng đến thời gian thực hiện thực tế.
  • C. Vì chúng chỉ quan trọng trong trường hợp tốt nhất.
  • D. Vì chúng làm cho việc tính toán phức tạp hơn.

Câu 20: Xét đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to i*i:
// Phép tính O(1)
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 21: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Trong trường hợp tốt nhất, phần tử cần tìm nằm ở vị trí đầu tiên. Độ phức tạp thời gian trong trường hợp này là bao nhiêu?

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

Câu 22: Một thuật toán có độ phức tạp O(n log n). Thuật toán này hiệu quả hơn thuật toán O(n^2) và kém hiệu quả hơn thuật toán O(n). Phát biểu này Đúng hay Sai?

  • A. Đúng
  • B. Sai

Câu 23: Xét một đoạn mã thực hiện việc in tất cả các cặp phần tử khác nhau trong một mảng có kích thước n. Cấu trúc vòng lặp phổ biến để làm việc này là hai vòng lặp lồng nhau, mỗi vòng chạy từ 0 đến n-1, với điều kiện bỏ qua các cặp giống nhau hoặc đã xét. Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

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

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

  • A. Đánh giá hiệu quả của thuật toán khi kích thước đầu vào tăng lên.
  • B. Xác định thời gian chạy chính xác trên một máy tính cụ thể.
  • C. Tìm lỗi trong thuật toán.
  • D. Đảm bảo thuật toán luôn cho ra kết quả đúng.

Câu 25: Xét đoạn mã giả sau:
```
void process_data(int n) {
for i from 1 to n:
// Phép tính O(1)
for j from 1 to n*n:
// Phép tính O(1)
}
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 26: Thuật toán sắp xếp chèn (Insertion Sort) trên một mảng có kích thước n. Trong trường hợp xấu nhất (mảng sắp xếp ngược), độ 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 log n)
  • C. O(n^2)
  • D. O(log n)

Câu 27: Xét đoạn mã giả sau:
```
void process_recursive(int n) {
if (n <= 0) return; // Phép tính O(1) process_recursive(n - 1); } ``` Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 28: Khi so sánh hai thuật toán A có độ phức tạp O(n log n) và thuật toán B có độ phức tạp O(n^2), điều gì xảy ra khi kích thước đầu vào n tăng từ nhỏ đến rất lớn?

  • A. Thuật toán A nhanh hơn B khi n đủ lớn.
  • B. Thuật toán B nhanh hơn A khi n đủ lớn.
  • C. Cả hai thuật toán có hiệu suất tương đương khi n rất lớn.
  • D. Không thể so sánh hiệu suất chỉ dựa vào độ phức tạp Big O.

Câu 29: Xét đoạn mã giả sau:
```
for i from 1 to 100:
for j from 1 to n:
// Phép tính O(1)
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

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

Câu 30: Một thuật toán xử lý dữ liệu có kích thước n. Người ta đo được thời gian chạy T(n) và vẽ đồ thị T(n) theo n. Nếu đồ thị có dạng một đường thẳng đi qua gốc tọa độ (hoặc gần như vậy khi n lớn), thì độ phức tạp thời gian của thuật toán có khả năng là gì?

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

1 / 30

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

Tags: Bộ đề 04

Câu 1: Xét đoạn mã giả sau:
```
sum = 0
for i from 1 to n:
sum = sum + i
```
Đoạn mã này tính tổng các số từ 1 đến n. Độ phức tạp thời gian của đoạn mã này được biểu diễn bằng kí hiệu Big O nào?

2 / 30

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

Tags: Bộ đề 04

Câu 2: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Trong trường hợp xấu nhất, phần tử cần tìm không có trong mảng. Độ phức tạp thời gian trong trường hợp 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 3: Một thuật toán có độ phức tạp thời gian là O(n^2). Nếu với đầu vào có kích thước n=1000, thuật toán chạy mất 1 giây, thì ước tính với đầu vào có kích thước n=2000, thuật toán sẽ chạy mất khoảng bao lâu?

4 / 30

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

Tags: Bộ đề 04

Câu 4: Thuật toán sắp xếp chọn (Selection Sort) trên một mảng có kích thước n. Độ phức tạp thời gian của thuật toán này là bao nhiêu trong trường hợp trung bình?

5 / 30

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

Tags: Bộ đề 04

Câu 5: Xét đoạn mã giả sau:
```
count = 0
for i from 1 to n:
for j from 1 to n:
count = count + 1
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

6 / 30

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

Tags: Bộ đề 04

Câu 6: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Trong trường hợp mảng đã được sắp xếp từ trước (trường hợp tốt 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

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

8 / 30

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

Tags: Bộ đề 04

Câu 8: Một thuật toán có độ phức tạp O(log n). Điều này có ý nghĩa gì về hiệu suất của thuật toán khi kích thước đầu vào n tăng lê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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 9: Xét đoạn mã giả sau:
```
result = 0
for i from 1 to n:
for j from i to n:
result = result + 1
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

10 / 30

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

Tags: Bộ đề 04

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

11 / 30

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

Tags: Bộ đề 04

Câu 11: Thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có kích thước n. Độ phức tạp thời gian của thuật toán 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 12: So sánh hai thuật toán A (độ phức tạp O(n)) và thuật toán B (độ phức tạp O(n^2)). Với kích thước đầu vào n đủ lớn, thuật toán nào sẽ có hiệu suất tốt hơn (chạy nhanh hơn)?

13 / 30

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

Tags: Bộ đề 04

Câu 13: Xét đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to 100:
// Thực hiện một phép tính O(1)
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

14 / 30

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

Tags: Bộ đề 04

Câu 14: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Trong trường hợp xấu nhất (mảng sắp xếp ngược), độ 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 15: Khi phân tích độ phức tạp thời gian, tại sao chúng ta thường quan tâm đến trường hợp xấu nhất (worst-case) hơn là trường hợp tốt nhất (best-case)?

16 / 30

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

Tags: Bộ đề 04

Câu 16: Xét đoạn mã giả sau:
```
void process(int n) {
if (n <= 1) return; process(n/2); process(n/2); } ``` Đây là một hàm đệ quy. Độ phức tạp thời gian của hà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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 17: Xét đoạn mã giả sau:
```
void do_something(int n) {
for i from 1 to n:
// Phép tính O(1)
for j from 1 to n:
// Phép tính O(1)
}
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

18 / 30

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

Tags: Bộ đề 04

Câu 18: Một thuật toán mất 5ms để xử lý dữ liệu có kích thước n=100. Nếu độ phức tạp của thuật toán là O(n log n), ước tính thời gian xử lý cho dữ liệu có kích thước n=10000 sẽ là bao nhiêu?

19 / 30

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

Tags: Bộ đề 04

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

20 / 30

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

Tags: Bộ đề 04

Câu 20: Xét đoạn mã giả sau:
```
for i from 1 to n:
for j from 1 to i*i:
// Phép tính O(1)
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

21 / 30

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

Tags: Bộ đề 04

Câu 21: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Trong trường hợp tốt nhất, phần tử cần tìm nằm ở vị trí đầu tiên. Độ phức tạp thời gian trong trường hợp 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 22: Một thuật toán có độ phức tạp O(n log n). Thuật toán này hiệu quả hơn thuật toán O(n^2) và kém hiệu quả hơn thuật toán O(n). Phát biểu này Đúng hay Sai?

23 / 30

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

Tags: Bộ đề 04

Câu 23: Xét một đoạn mã thực hiện việc in tất cả các cặp phần tử khác nhau trong một mảng có kích thước n. Cấu trúc vòng lặp phổ biến để làm việc này là hai vòng lặp lồng nhau, mỗi vòng chạy từ 0 đến n-1, với điều kiện bỏ qua các cặp giống nhau hoặc đã xét. Độ phức tạp thời gian của đoạn mã này là bao nhiêu?

24 / 30

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

Tags: Bộ đề 04

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

25 / 30

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

Tags: Bộ đề 04

Câu 25: Xét đoạn mã giả sau:
```
void process_data(int n) {
for i from 1 to n:
// Phép tính O(1)
for j from 1 to n*n:
// Phép tính O(1)
}
```
Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

26 / 30

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

Tags: Bộ đề 04

Câu 26: Thuật toán sắp xếp chèn (Insertion Sort) trên một mảng có kích thước n. Trong trường hợp xấu nhất (mảng sắp xếp ngược), độ phức tạp thời gian của thuật toán này là bao nhiêu?

27 / 30

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

Tags: Bộ đề 04

Câu 27: Xét đoạn mã giả sau:
```
void process_recursive(int n) {
if (n <= 0) return; // Phép tính O(1) process_recursive(n - 1); } ``` Đoạn mã này có độ phức tạp thời gian là bao nhiêu?

28 / 30

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

Tags: Bộ đề 04

Câu 28: Khi so sánh hai thuật toán A có độ phức tạp O(n log n) và thuật toán B có độ phức tạp O(n^2), điều gì xảy ra khi kích thước đầu vào n tăng từ nhỏ đế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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 29: Xét đoạn mã giả sau:
```
for i from 1 to 100:
for j from 1 to n:
// Phép tính O(1)
```
Đoạn mã này 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 04

Câu 30: Một thuật toán xử lý dữ liệu có kích thước n. Người ta đo được thời gian chạy T(n) và vẽ đồ thị T(n) theo n. Nếu đồ thị có dạng một đường thẳng đi qua gốc tọa độ (hoặc gần như vậy khi n lớn), thì độ phức tạp thời gian của thuật toán có khả năng là gì?

0

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

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


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

Câu 1: Cho đoạn mã giả sau:
```
function TinhTong(n):
tong = 0
for i from 1 to n:
tong = tong + i
return tong
```
Độ phức tạp thời gian của hàm `TinhTong(n)` theo ký hiệu O lớn là bao nhiêu?

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

Câu 2: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu O lớn (Big O notation) thường mô tả trường hợp nào?

  • 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 trên

Câu 3: Cho đoạn mã giả sau:
```
function TimPhanTu(mang, gia_tri):
for i from 0 to length(mang) - 1:
if mang[i] == gia_tri:
return i
return -1
```
Nếu mảng `mang` có kích thước `n` và phần tử `gia_tri` nằm ở vị trí cuối cùng của mảng, độ 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 4: Thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã được sắp xếp có độ phức tạp thời gian trong trường hợp xấu nhất là O(log n). Điều này có ý nghĩa gì khi kích thước dữ liệu `n` tăng lên?

  • A. Thời gian thực hiện tăng tuyến tính với `n`.
  • B. Thời gian thực hiện tăng theo bình phương của `n`.
  • C. Thời gian thực hiện tăng rất nhanh khi `n` lớn.
  • D. Thời gian thực hiện tăng rất chậm so với sự tăng của `n`.

Câu 5: Cho đoạn mã giả sau:
```
function XuLyDuLieu(n):
for i from 1 to n:
for j from 1 to n:
print(i * j)
```
Độ phức tạp thời gian của hàm `XuLyDuLieu(n)` là bao nhiêu?

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

Câu 6: Nếu một thuật toán có độ phức tạp thời gian là O(n^2) và mất 1 giây để xử lý 1000 phần tử, ước tính thời gian cần thiết để xử lý 10000 phần tử là bao nhiêu?

  • A. 10 giây
  • B. 100 giây
  • C. 100 giây
  • D. 1000 giây

Câu 7: Thuật toán sắp xếp chọn (Selection Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Điều này có nghĩa là gì về hiệu suất của thuật toán này với dữ liệu lớn?

  • A. Thời gian thực hiện tăng rất nhanh khi kích thước dữ liệu tăng, không phù hợp với tập dữ liệu rất lớn.
  • B. Thời gian thực hiện tăng chậm, phù hợp với mọi kích thước dữ liệu.
  • C. Thời gian thực hiện là hằng số, không phụ thuộc vào kích thước dữ liệu.
  • D. Thời gian thực hiện chỉ tăng tuyến tính với kích thước dữ liệu.

Câu 8: Cho đoạn mã giả sau:
```
function HamKyBi(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của hàm `HamKyBi(n)` là bao nhiêu?

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

Câu 9: Khi so sánh thuật toán tìm kiếm tuần tự (Linear Search) với tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có kích thước `n`, nhận định nào sau đây là đúng về độ phức tạp thời gian trong trường hợp xấu nhất?

  • A. Tìm kiếm tuần tự (O(n)) chậm hơn tìm kiếm nhị phân (O(log n)) đáng kể khi `n` lớn.
  • B. Tìm kiếm tuần tự (O(n)) nhanh hơn tìm kiếm nhị phân (O(log n)) khi `n` lớn.
  • C. Hai thuật toán có độ phức tạp tương đương nhau khi `n` lớn.
  • D. Độ phức tạp của tìm kiếm nhị phân phụ thuộc vào việc mảng có chứa số nguyên hay không.

Câu 10: Một thuật toán thực hiện các bước sau:
1. Duyệt qua toàn bộ mảng kích thước `n` một lần để tìm giá trị lớn nhất (O(n)).
2. Thực hiện 10 phép tính số học cố định (không phụ thuộc vào `n`) (O(1)).
Độ phức tạp thời gian tổng thể của thuật toán này là bao nhiêu?

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

Câu 11: Cho đoạn mã giả sau:
```
function ProcessData(A, B):
n = length(A)
m = length(B)
for i from 0 to n-1:
for j from 0 to m-1:
print(A[i] + B[j])
```
Nếu `n` rất lớn và `m` rất lớn, độ phức tạp thời gian của hàm `ProcessData(A, B)` là bao nhiêu?

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

Câu 12: Khi phân tích độ phức tạp của một thuật toán, hằng số và các hệ số bậc thấp thường bị bỏ qua trong ký hiệu O lớn. Ví dụ, O(2n^2 + 5n + 3) được rút gọn thành O(n^2). Tại sao lại làm như vậy?

  • A. Để tập trung vào tốc độ tăng trưởng của thời gian thực hiện khi kích thước đầu vào rất lớn.
  • B. Để làm cho việc tính toán đơn giản hơn.
  • C. Vì các hằng số và hệ số bậc thấp không ảnh hưởng đến thời gian thực hiện.
  • D. Vì chúng chỉ quan trọng trong trường hợp tốt nhất.

Câu 13: 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 tốt nhất (mảng đã sắp xếp) là O(n). Tại sao lại như vậy?

  • A. Vì thuật toán chỉ cần một vòng lặp để kiểm tra.
  • B. Vì thuật toán có thể phát hiện mảng đã sắp xếp sau một lần duyệt đầy đủ mà không cần đổi chỗ nào.
  • C. Vì thuật toán chỉ thực hiện một phép so sánh.
  • D. Vì độ phức tạp O(n) là tối ưu cho mọi thuật toán sắp xếp.

Câu 14: Cho đoạn mã giả:
```
function Example(n):
count = 0
for i from 1 to n:
for j from 1 to i:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `Example(n)` là bao nhiêu?

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

Câu 15: Một thuật toán có độ phức tạp O(log n). Nếu với n = 1000, thuật toán chạy mất 10ms, thì ước tính với n = 1,000,000 (gấp 1000 lần), thuật toán sẽ chạy mất khoảng bao lâu? (Biết log2(1000) ≈ 10, log2(1000000) ≈ 20)

  • A. Khoảng 20ms
  • B. Khoảng 100ms
  • C. Khoảng 1000ms
  • D. Khoảng 10000ms

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

  • A. Tìm kiếm một phần tử trong danh sách liên kết.
  • B. Sắp xếp một mảng bằng Bubble Sort.
  • C. Truy cập một phần tử tại vị trí bất kỳ trong mảng bằng chỉ số.
  • D. Duyệt qua tất cả các phần tử trong một danh sách.

Câu 17: Khi phân tích một thuật toán đệ quy, độ phức tạp thời gian thường được biểu diễn bằng gì?

  • A. Hệ thức truy hồi (Recurrence Relation)
  • B. Công thức đóng (Closed Form)
  • C. Đồ thị hàm số
  • D. Ma trận kề

Câu 18: Cho đoạn mã giả sau:
```
function AnotherExample(n):
for i from 1 to n:
j = 1
while j <= n: print(i * j) j = j * 2 ``` Độ phức tạp thời gian của hàm `AnotherExample(n)` là bao nhiêu?

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

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

  • A. Tìm kiếm tuần tự (Linear Search)
  • 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 trộn (Merge Sort)

Câu 20: Giả sử bạn cần chọn một thuật toán để xử lý một tập dữ liệu có kích thước N rất lớn (ví dụ: N = 1 tỷ). Thuật toán nào có độ phức tạp thời gian ít phù hợp nhất?

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

Câu 21: Cho đoạn mã giả sau:
```
function WeirdFunction(n):
if n <= 1: return 1 else: return WeirdFunction(n/2) + WeirdFunction(n/2) ``` Độ phức tạp thời gian của hàm đệ quy `WeirdFunction(n)` là bao nhiêu? (Giả sử phép chia `/` là phép chia nguyên)

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

Câu 22: Khái niệm nào sau đây mô tả 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?

  • A. Độ chính xác của thuật toán
  • B. Độ đo bộ nhớ của thuật toán
  • C. Độ phức tạp thời gian của thuật toán
  • D. Tính đúng đắn của thuật toán

Câu 23: Cho đoạn mã giả sau:
```
function ProcessMatrix(matrix, n):
# matrix là ma trận vuông n x n
sum = 0
for i from 0 to n-1:
sum = sum + matrix[i][i] # Duyệt đường chéo chính
return sum
```
Độ phức tạp thời gian của hàm `ProcessMatrix(matrix, n)` là bao nhiêu?

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

Câu 24: Trong phân tích độ phức tạp, O(n) được gọi là độ phức tạp gì?

  • A. Tuyến tính (Linear)
  • B. Logarit (Logarithmic)
  • C. Hằng số (Constant)
  • D. Bình phương (Quadratic)

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

  • A. Chỉ để biết thuật toán có chạy được hay không.
  • B. Để biết chính xác thời gian chạy trên một máy tính cụ thể.
  • C. Để làm cho mã nguồn ngắn gọn hơn.
  • D. Để dự đoán hiệu suất của thuật toán với các tập dữ liệu lớn và so sánh hiệu quả giữa các thuật toán khác nhau.

Câu 26: Cho đoạn mã giả sau:
```
function AnalyzeData(n):
total = 0
for i from 1 to 100:
total = total + i
for j from 1 to n:
total = total + j*2
return total
```
Độ phức tạp thời gian của hàm `AnalyzeData(n)` là bao nhiêu?

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

Câu 27: 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 (chạy nhanh nhất với `n` đủ lớn)?

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

Câu 28: Khi một thuật toán chứa một vòng lặp `for` chạy từ 1 đến `n` và bên trong vòng lặp đó có một lời gọi hàm khác có độ phức tạp O(log n), thì độ phức tạp tổng thể của thuật toán là bao nhiêu?

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

Câu 29: Cho đoạn mã giả:
```
function CompareArrays(A, B):
n = length(A)
m = length(B)
if n != m:
return False
for i from 0 to n-1:
if A[i] != B[i]:
return False
return True
```
Giả sử `n` và `m` có cùng độ lớn. Độ phức tạp thời gian của hàm `CompareArrays` trong trường hợp xấu nhất (hai mảng giống hệt nhau) là bao nhiêu?

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

Câu 30: Trong các yếu tố sau, yếu tố nào không ảnh hưởng trực tiếp đến độ phức tạp thời gian lý thuyết (Big O) của một thuật toán?

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

1 / 30

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

Tags: Bộ đề 05

Câu 1: Cho đoạn mã giả sau:
```
function TinhTong(n):
tong = 0
for i from 1 to n:
tong = tong + i
return tong
```
Độ phức tạp thời gian của hàm `TinhTong(n)` theo ký hiệu O lớn là bao nhiêu?

2 / 30

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

Tags: Bộ đề 05

Câu 2: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu O lớn (Big O notation) thường mô tả 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 05

Câu 3: Cho đoạn mã giả sau:
```
function TimPhanTu(mang, gia_tri):
for i from 0 to length(mang) - 1:
if mang[i] == gia_tri:
return i
return -1
```
Nếu mảng `mang` có kích thước `n` và phần tử `gia_tri` nằm ở vị trí cuối cùng của mảng, độ phức tạp thời gian là bao nhiêu?

4 / 30

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

Tags: Bộ đề 05

Câu 4: Thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã được sắp xếp có độ phức tạp thời gian trong trường hợp xấu nhất là O(log n). Điều này có ý nghĩa gì khi kích thước dữ liệu `n` tăng lên?

5 / 30

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

Tags: Bộ đề 05

Câu 5: Cho đoạn mã giả sau:
```
function XuLyDuLieu(n):
for i from 1 to n:
for j from 1 to n:
print(i * j)
```
Độ phức tạp thời gian của hàm `XuLyDuLieu(n)` là bao nhiêu?

6 / 30

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

Tags: Bộ đề 05

Câu 6: Nếu một thuật toán có độ phức tạp thời gian là O(n^2) và mất 1 giây để xử lý 1000 phần tử, ước tính thời gian cần thiết để xử lý 10000 phần tử là bao nhiêu?

7 / 30

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

Tags: Bộ đề 05

Câu 7: Thuật toán sắp xếp chọn (Selection Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Điều này có nghĩa là gì về hiệu suất của thuật toán này với dữ liệu lớn?

8 / 30

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

Tags: Bộ đề 05

Câu 8: Cho đoạn mã giả sau:
```
function HamKyBi(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của hàm `HamKyBi(n)` là bao nhiêu?

9 / 30

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

Tags: Bộ đề 05

Câu 9: Khi so sánh thuật toán tìm kiếm tuần tự (Linear Search) với tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có kích thước `n`, nhận định nào sau đây là đúng về độ phức tạp thời gian trong trường hợp xấu nhất?

10 / 30

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

Tags: Bộ đề 05

Câu 10: Một thuật toán thực hiện các bước sau:
1. Duyệt qua toàn bộ mảng kích thước `n` một lần để tìm giá trị lớn nhất (O(n)).
2. Thực hiện 10 phép tính số học cố định (không phụ thuộc vào `n`) (O(1)).
Độ phức tạp thời gian tổng thể của thuật toán này là bao nhiêu?

11 / 30

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

Tags: Bộ đề 05

Câu 11: Cho đoạn mã giả sau:
```
function ProcessData(A, B):
n = length(A)
m = length(B)
for i from 0 to n-1:
for j from 0 to m-1:
print(A[i] + B[j])
```
Nếu `n` rất lớn và `m` rất lớn, độ phức tạp thời gian của hàm `ProcessData(A, B)` là bao nhiêu?

12 / 30

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

Tags: Bộ đề 05

Câu 12: Khi phân tích độ phức tạp của một thuật toán, hằng số và các hệ số bậc thấp thường bị bỏ qua trong ký hiệu O lớn. Ví dụ, O(2n^2 + 5n + 3) được rút gọn thành O(n^2). Tại sao lại làm như vậy?

13 / 30

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

Tags: Bộ đề 05

Câu 13: 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 tốt nhất (mảng đã sắp xếp) là O(n). Tại sao lại như vậy?

14 / 30

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

Tags: Bộ đề 05

Câu 14: Cho đoạn mã giả:
```
function Example(n):
count = 0
for i from 1 to n:
for j from 1 to i:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `Example(n)` là bao nhiêu?

15 / 30

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

Tags: Bộ đề 05

Câu 15: Một thuật toán có độ phức tạp O(log n). Nếu với n = 1000, thuật toán chạy mất 10ms, thì ước tính với n = 1,000,000 (gấp 1000 lần), thuật toán sẽ chạy mất khoảng bao lâu? (Biết log2(1000) ≈ 10, log2(1000000) ≈ 20)

16 / 30

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

Tags: Bộ đề 05

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

17 / 30

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

Tags: Bộ đề 05

Câu 17: Khi phân tích một thuật toán đệ quy, độ phức tạp thời gian thường được biểu diễn bằng gì?

18 / 30

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

Tags: Bộ đề 05

Câu 18: Cho đoạn mã giả sau:
```
function AnotherExample(n):
for i from 1 to n:
j = 1
while j <= n: print(i * j) j = j * 2 ``` Độ phức tạp thời gian của hàm `AnotherExample(n)` là bao nhiêu?

19 / 30

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

Tags: Bộ đề 05

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

20 / 30

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

Tags: Bộ đề 05

Câu 20: Giả sử bạn cần chọn một thuật toán để xử lý một tập dữ liệu có kích thước N rất lớn (ví dụ: N = 1 tỷ). Thuật toán nào có độ phức tạp thời gian *ít phù hợp nhất*?

21 / 30

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

Tags: Bộ đề 05

Câu 21: Cho đoạn mã giả sau:
```
function WeirdFunction(n):
if n <= 1: return 1 else: return WeirdFunction(n/2) + WeirdFunction(n/2) ``` Độ phức tạp thời gian của hàm đệ quy `WeirdFunction(n)` là bao nhiêu? (Giả sử phép chia `/` là phép chia nguyên)

22 / 30

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

Tags: Bộ đề 05

Câu 22: Khái niệm nào sau đây mô tả 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?

23 / 30

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

Tags: Bộ đề 05

Câu 23: Cho đoạn mã giả sau:
```
function ProcessMatrix(matrix, n):
# matrix là ma trận vuông n x n
sum = 0
for i from 0 to n-1:
sum = sum + matrix[i][i] # Duyệt đường chéo chính
return sum
```
Độ phức tạp thời gian của hàm `ProcessMatrix(matrix, n)` là bao nhiêu?

24 / 30

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

Tags: Bộ đề 05

Câu 24: Trong phân tích độ phức tạp, O(n) được gọi là độ phức tạp gì?

25 / 30

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

Tags: Bộ đề 05

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

26 / 30

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

Tags: Bộ đề 05

Câu 26: Cho đoạn mã giả sau:
```
function AnalyzeData(n):
total = 0
for i from 1 to 100:
total = total + i
for j from 1 to n:
total = total + j*2
return total
```
Độ phức tạp thời gian của hàm `AnalyzeData(n)` là bao nhiêu?

27 / 30

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

Tags: Bộ đề 05

Câu 27: 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 (chạy nhanh nhất với `n` đủ lớn)?

28 / 30

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

Tags: Bộ đề 05

Câu 28: Khi một thuật toán chứa một vòng lặp `for` chạy từ 1 đến `n` và bên trong vòng lặp đó có một lời gọi hàm khác có độ phức tạp O(log n), thì độ phức tạp tổng thể của thuật toán là bao nhiêu?

29 / 30

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

Tags: Bộ đề 05

Câu 29: Cho đoạn mã giả:
```
function CompareArrays(A, B):
n = length(A)
m = length(B)
if n != m:
return False
for i from 0 to n-1:
if A[i] != B[i]:
return False
return True
```
Giả sử `n` và `m` có cùng độ lớn. Độ phức tạp thời gian của hàm `CompareArrays` trong trường hợp xấu nhất (hai mảng giống hệt nhau) là bao nhiêu?

30 / 30

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

Tags: Bộ đề 05

Câu 30: Trong các yếu tố sau, yếu tố nào *không* ảnh hưởng trực tiếp đến độ phức tạp thời gian lý thuyết (Big O) của một thuật toán?

0

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

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


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

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu Big O (ví dụ: O(n), O(n^2), O(log n)) chủ yếu mô tả điều gì?

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

Câu 2: Cho đoạn mã giả sau:
```
function ProcessArray(arr, n):
sum = 0
for i from 0 to n-1:
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của hàm `ProcessArray` là bao nhiêu?

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

Câu 3: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. 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(1)
  • B. O(n)
  • C. O(n^2)
  • D. O(n log n)

Câu 4: Cho đoạn mã giả sau:
```
function AnalyzeData(data, n):
count = 0
for i from 0 to n-1:
for j from 0 to n-1:
if data[i] == data[j]:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `AnalyzeData` là bao nhiêu?

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

Câu 5: Đối với các thuật toán sắp xếp đơn giản như Sắp xếp chọn (Selection Sort) hoặc Sắp xếp nổi bọt (Bubble Sort), độ phức tạp thời gian trong trường hợp xấu nhất và trung bình thường là bao nhiêu?

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

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

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

Câu 7: Khi phân tích độ phức tạp thời gian của một thuật toán, tại sao chúng ta thường chỉ quan tâm đến số hạng có bậc cao nhất và bỏ qua các hằng số cùng các số hạng bậc thấp hơn?

  • A. Vì các số hạng bậc thấp hơn không ảnh hưởng đến thời gian chạy.
  • B. Vì các hằng số luôn bằng 1 trong phân tích Big O.
  • C. Vì chúng ta chỉ quan tâm đến trường hợp tốt nhất của thuật toán.
  • D. Vì khi n đủ lớn, sự tăng trưởng của thời gian chạy chủ yếu được quyết định bởi số hạng có bậc cao nhất.

Câu 8: Hai thuật toán A và B cùng giải quyết một vấn đề. Thuật toán A có độ phức tạp O(n^2), thuật toán B có độ phức tạp O(n log n). Khi kích thước dữ liệu đầu vào n rất lớn, thuật toán nào có xu hướng chạy nhanh hơn?

  • A. Thuật toán A.
  • B. Thuật toán B.
  • C. Cả hai thuật toán chạy với tốc độ tương đương.
  • D. Không thể xác định chỉ dựa vào độ phức tạp Big O.

Câu 9: Cho đoạn mã giả sau:
```
function Example(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của hàm `Example` là bao nhiêu?

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

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

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

Câu 11: Cho đoạn mã giả sau:
```
function Combine(arr1, n1, arr2, n2):
// arr1 có kích thước n1, arr2 có kích thước n2
sum1 = 0
for i from 0 to n1-1:
sum1 = sum1 + arr1[i] // Vòng lặp 1

sum2 = 0
for j from 0 to n2-1:
sum2 = sum2 + arr2[j] // Vòng lặp 2

return sum1 + sum2
```
Giả sử n1 và n2 có cùng độ lớn, ký hiệu là n (n1 ≈ n2 ≈ n). Độ phức tạp thời gian của hàm `Combine` là bao nhiêu?

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

Câu 12: Tại sao việc xác định độ phức tạp thời gian của thuật toán lại quan trọng đối với lập trình viên?

  • A. Để biết thuật toán có sử dụng ngôn ngữ lập trình hiện đại hay không.
  • B. Để biết thuật toán có thể giải quyết được mọi bài toán hay không.
  • C. Để đánh giá hiệu suất của thuật toán khi xử lý dữ liệu lớn và so sánh các thuật toán khác nhau.
  • D. Để kiểm tra xem thuật toán có bị lỗi cú pháp hay không.

Câu 13: Cho đoạn mã giả sau:
```
function PrintPairs(arr, n):
for i from 0 to n-1:
for j from i to n-1:
print(arr[i], arr[j])
```
Độ phức tạp thời gian của hàm `PrintPairs` là bao nhiêu?

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

Câu 14: Nếu một thuật toán có độ phức tạp O(n), và nó mất 100 mili giây để xử lý dữ liệu có kích thước n=1000. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=10000 là bao nhiêu?

  • A. 100 mili giây
  • B. 1000 mili giây (1 giây)
  • C. 10000 mili giây (10 giây)
  • D. 100000 mili giây (100 giây)

Câu 15: Giả sử một thuật toán có độ phức tạp O(n^2). Nếu nó mất 1 giây để xử lý dữ liệu có kích thước n=1000. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=2000 là bao nhiêu?

  • A. 1 giây
  • B. 2 giây
  • C. 3 giây
  • D. 4 giây

Câu 16: Trong phân tích độ phức tạp, "trường hợp tốt nhất" (best case) của một thuật toán là gì?

  • A. Tình huống dữ liệu đầu vào khiến thuật toán thực hiện số phép tính ít nhất.
  • B. Tình huống dữ liệu đầu vào khiến thuật toán thực hiện số phép tính nhiều nhất.
  • C. Thời gian chạy trung bình của thuật toán trên nhiều bộ dữ liệu khác nhau.
  • D. Thời gian chạy của thuật toán trên máy tính nhanh nhất.

Câu 17: Cho đoạn mã giả sau:
```
function CheckConstant(arr, n):
if n > 0:
print(arr[0])
// Các thao tác khác không phụ thuộc vào n
result = 1 + 2
return result
```
Độ phức tạp thời gian của hàm `CheckConstant` là bao nhiêu?

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

Câu 18: Đối với thuật toán tìm kiếm tuần tự (Linear Search) trên mảng kích thước n, trường hợp tốt nhất xảy ra khi nào và độ phức tạp thời gian trong trường hợp đó là bao nhiêu?

  • A. Phần tử cần tìm không có trong mảng, O(n).
  • B. Phần tử cần tìm ở vị trí cuối cùng, O(n).
  • C. Phần tử cần tìm ở vị trí đầu tiên, O(1).
  • D. Mảng đã được sắp xếp, O(log n).

Câu 19: Khi một thuật toán bao gồm nhiều phần có độ phức tạp khác nhau (ví dụ: một phần O(n) và một phần O(n^2) thực hiện nối tiếp nhau), độ phức tạp tổng thể của thuật toán được xác định bởi phần nào?

  • A. Phần có độ phức tạp thấp nhất.
  • B. Phần có độ phức tạp cao nhất.
  • C. Trung bình cộng độ phức tạp của các phần.
  • D. Tích độ phức tạp của các phần.

Câu 20: Cho đoạn mã giả sau:
```
function ProcessMatrix(matrix, n):
// matrix là ma trận vuông n x n
total = 0
for i from 0 to n-1:
for j from 0 to n-1:
total = total + matrix[i][j]
return total
```
Độ phức tạp thời gian của hàm `ProcessMatrix` khi duyệt qua tất cả các phần tử của ma trận n x n là bao nhiêu?

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

Câu 21: Thuật toán nào trong các lựa chọn sau đây thường có độ phức tạp thời gian tốt nhất (nhanh nhất) đối với các bộ dữ liệu lớn?

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

Câu 22: Cho đoạn mã giả sau:
```
function PartialSum(arr, n):
sum = 0
for i from 0 to min(n-1, 100):
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của hàm `PartialSum` là bao nhiêu?

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

Câu 23: Giả sử bạn có một thuật toán O(n log n). Nếu nó xử lý n=1000 phần tử trong 10ms, ước tính thời gian để xử lý n=10000 phần tử là bao nhiêu? (Lưu ý: log(1000) ≈ 10, log(10000) ≈ 13.3)

  • A. Khoảng 100 ms
  • B. Khoảng 133 ms
  • C. Khoảng 1000 ms
  • D. Khoảng 1330 ms (1.33 giây)

Câu 24: Trong phân tích độ phức tạp, "trường hợp xấu nhất" (worst case) của một thuật toán là gì?

  • A. Tình huống dữ liệu đầu vào khiến thuật toán thực hiện số phép tính ít nhất.
  • B. Tình huống dữ liệu đầu vào khiến thuật toán thực hiện số phép tính nhiều nhất.
  • C. Thời gian chạy trung bình của thuật toán trên nhiều bộ dữ liệu khác nhau.
  • D. Thời gian chạy của thuật toán trên máy tính chậm nhất.

Câu 25: Cho đoạn mã giả sau:
```
function ExampleNested(n):
count = 0
for i from 1 to n:
for j from 1 to n:
for k from 1 to n:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `ExampleNested` là bao nhiêu?

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

Câu 26: Khi so sánh hiệu suất của hai thuật toán có độ phức tạp O(n log n) và O(n^2), điều gì là đúng khi kích thước dữ liệu n tăng lên?

  • A. Thuật toán O(n log n) sẽ nhanh hơn đáng kể so với O(n^2).
  • B. Thuật toán O(n^2) sẽ nhanh hơn đáng kể so với O(n log n).
  • C. Hai thuật toán sẽ có hiệu suất tương đương.
  • D. Hiệu suất chỉ phụ thuộc vào hằng số ẩn trong ký hiệu Big O.

Câu 27: Cho đoạn mã giả sau:
```
function ProcessEveryOther(arr, n):
sum = 0
for i from 0 to n-1 step 2:
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của hàm `ProcessEveryOther` là bao nhiêu?

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

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

  • A. Tìm kiếm tuần tự.
  • B. Các thao tác cơ bản trên mảng cố định.
  • C. Các thuật toán có ba vòng lặp lồng nhau.
  • D. Các thuật toán sắp xếp hiệu quả như Merge Sort (Sắp xếp trộn) hoặc Quick Sort (Sắp xếp nhanh).

Câu 29: Nếu một thuật toán có độ phức tạp O(n^3) và mất 8 giây để xử lý dữ liệu có kích thước n=100. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=200 là bao nhiêu?

  • A. 64 giây
  • B. 16 giây
  • C. 32 giây
  • D. 128 giây

Câu 30: Trong phân tích độ phức tạp thời gian, "trường hợp trung bình" (average case) của một thuật toán là gì?

  • A. Tình huống dữ liệu đầu vào khiến thuật toán thực hiện số phép tính ít nhất.
  • B. Tình huống dữ liệu đầu vào khiến thuật toán thực hiện số phép tính nhiều nhất.
  • C. Thời gian chạy kỳ vọng của thuật toán trên tất cả các bộ dữ liệu đầu vào có thể xảy ra, tính trung bình.
  • D. Thời gian chạy của thuật toán khi n là số nguyên tố.

1 / 30

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

Tags: Bộ đề 06

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu Big O (ví dụ: O(n), O(n^2), O(log n)) chủ yếu 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 06

Câu 2: Cho đoạn mã giả sau:
```
function ProcessArray(arr, n):
sum = 0
for i from 0 to n-1:
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của hàm `ProcessArray` là bao nhiêu?

3 / 30

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

Tags: Bộ đề 06

Câu 3: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. 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?

4 / 30

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

Tags: Bộ đề 06

Câu 4: Cho đoạn mã giả sau:
```
function AnalyzeData(data, n):
count = 0
for i from 0 to n-1:
for j from 0 to n-1:
if data[i] == data[j]:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `AnalyzeData` là bao nhiêu?

5 / 30

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

Tags: Bộ đề 06

Câu 5: Đối với các thuật toán sắp xếp đơn giản như Sắp xếp chọn (Selection Sort) hoặc Sắp xếp nổi bọt (Bubble Sort), độ phức tạp thời gian trong trường hợp xấu nhất và trung bình thường là bao nhiêu?

6 / 30

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

Tags: Bộ đề 06

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

7 / 30

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

Tags: Bộ đề 06

Câu 7: Khi phân tích độ phức tạp thời gian của một thuật toán, tại sao chúng ta thường chỉ quan tâm đến số hạng có bậc cao nhất và bỏ qua các hằng số cùng các số hạng bậc thấp hơn?

8 / 30

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

Tags: Bộ đề 06

Câu 8: Hai thuật toán A và B cùng giải quyết một vấn đề. Thuật toán A có độ phức tạp O(n^2), thuật toán B có độ phức tạp O(n log n). Khi kích thước dữ liệu đầu vào n rất lớn, thuật toán nào có xu hướng chạy nhanh hơn?

9 / 30

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

Tags: Bộ đề 06

Câu 9: Cho đoạn mã giả sau:
```
function Example(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của hàm `Example` là bao nhiêu?

10 / 30

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

Tags: Bộ đề 06

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

11 / 30

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

Tags: Bộ đề 06

Câu 11: Cho đoạn mã giả sau:
```
function Combine(arr1, n1, arr2, n2):
// arr1 có kích thước n1, arr2 có kích thước n2
sum1 = 0
for i from 0 to n1-1:
sum1 = sum1 + arr1[i] // Vòng lặp 1

sum2 = 0
for j from 0 to n2-1:
sum2 = sum2 + arr2[j] // Vòng lặp 2

return sum1 + sum2
```
Giả sử n1 và n2 có cùng độ lớn, ký hiệu là n (n1 ≈ n2 ≈ n). Độ phức tạp thời gian của hàm `Combine` là bao nhiêu?

12 / 30

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

Tags: Bộ đề 06

Câu 12: Tại sao việc xác định độ phức tạp thời gian của thuật toán lại quan trọng đối với lập trình viên?

13 / 30

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

Tags: Bộ đề 06

Câu 13: Cho đoạn mã giả sau:
```
function PrintPairs(arr, n):
for i from 0 to n-1:
for j from i to n-1:
print(arr[i], arr[j])
```
Độ phức tạp thời gian của hàm `PrintPairs` là bao nhiêu?

14 / 30

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

Tags: Bộ đề 06

Câu 14: Nếu một thuật toán có độ phức tạp O(n), và nó mất 100 mili giây để xử lý dữ liệu có kích thước n=1000. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=10000 là bao nhiêu?

15 / 30

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

Tags: Bộ đề 06

Câu 15: Giả sử một thuật toán có độ phức tạp O(n^2). Nếu nó mất 1 giây để xử lý dữ liệu có kích thước n=1000. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=2000 là bao nhiêu?

16 / 30

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

Tags: Bộ đề 06

Câu 16: Trong phân tích độ phức tạp, 'trường hợp tốt nhất' (best case) của một thuật toán là gì?

17 / 30

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

Tags: Bộ đề 06

Câu 17: Cho đoạn mã giả sau:
```
function CheckConstant(arr, n):
if n > 0:
print(arr[0])
// Các thao tác khác không phụ thuộc vào n
result = 1 + 2
return result
```
Độ phức tạp thời gian của hàm `CheckConstant` là bao nhiêu?

18 / 30

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

Tags: Bộ đề 06

Câu 18: Đối với thuật toán tìm kiếm tuần tự (Linear Search) trên mảng kích thước n, trường hợp tốt nhất xảy ra khi nào và độ phức tạp thời gian trong trường hợp đó là bao nhiêu?

19 / 30

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

Tags: Bộ đề 06

Câu 19: Khi một thuật toán bao gồm nhiều phần có độ phức tạp khác nhau (ví dụ: một phần O(n) và một phần O(n^2) thực hiện nối tiếp nhau), độ phức tạp tổng thể của thuật toán được xác định bởi phần nào?

20 / 30

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

Tags: Bộ đề 06

Câu 20: Cho đoạn mã giả sau:
```
function ProcessMatrix(matrix, n):
// matrix là ma trận vuông n x n
total = 0
for i from 0 to n-1:
for j from 0 to n-1:
total = total + matrix[i][j]
return total
```
Độ phức tạp thời gian của hàm `ProcessMatrix` khi duyệt qua tất cả các phần tử của ma trận n x n là bao nhiêu?

21 / 30

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

Tags: Bộ đề 06

Câu 21: Thuật toán nào trong các lựa chọn sau đây thường có độ phức tạp thời gian tốt nhất (nhanh nhất) đối với các bộ dữ liệu lớn?

22 / 30

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

Tags: Bộ đề 06

Câu 22: Cho đoạn mã giả sau:
```
function PartialSum(arr, n):
sum = 0
for i from 0 to min(n-1, 100):
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của hàm `PartialSum` là bao nhiêu?

23 / 30

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

Tags: Bộ đề 06

Câu 23: Giả sử bạn có một thuật toán O(n log n). Nếu nó xử lý n=1000 phần tử trong 10ms, ước tính thời gian để xử lý n=10000 phần tử là bao nhiêu? (Lưu ý: log(1000) ≈ 10, log(10000) ≈ 13.3)

24 / 30

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

Tags: Bộ đề 06

Câu 24: Trong phân tích độ phức tạp, 'trường hợp xấu nhất' (worst case) của một thuật toán là gì?

25 / 30

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

Tags: Bộ đề 06

Câu 25: Cho đoạn mã giả sau:
```
function ExampleNested(n):
count = 0
for i from 1 to n:
for j from 1 to n:
for k from 1 to n:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `ExampleNested` là bao nhiêu?

26 / 30

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

Tags: Bộ đề 06

Câu 26: Khi so sánh hiệu suất của hai thuật toán có độ phức tạp O(n log n) và O(n^2), điều gì là đúng khi kích thước dữ liệu n tăng lên?

27 / 30

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

Tags: Bộ đề 06

Câu 27: Cho đoạn mã giả sau:
```
function ProcessEveryOther(arr, n):
sum = 0
for i from 0 to n-1 step 2:
sum = sum + arr[i]
return sum
```
Độ phức tạp thời gian của hàm `ProcessEveryOther` là bao nhiêu?

28 / 30

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

Tags: Bộ đề 06

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

29 / 30

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

Tags: Bộ đề 06

Câu 29: Nếu một thuật toán có độ phức tạp O(n^3) và mất 8 giây để xử lý dữ liệu có kích thước n=100. Ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=200 là bao nhiêu?

30 / 30

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

Tags: Bộ đề 06

Câu 30: Trong phân tích độ phức tạp thời gian, 'trường hợp trung bình' (average case) của một thuật toán là gì?

0

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

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


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

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán sử dụng ký hiệu O lớn (Big O), điều gì là mục đích chính của việc bỏ qua các hằng số nhân và các số hạng bậc thấp hơn?

  • A. Giúp làm cho công thức tính toán đơn giản hơn.
  • B. Chúng chỉ ảnh hưởng đến thuật toán khi kích thước đầu vào nhỏ.
  • C. Chúng không bao giờ ảnh hưởng đến hiệu suất thực tế của thuật toán.
  • D. Tập trung vào tốc độ tăng trưởng của thời gian thực hiện khi kích thước đầu vào rất lớn.

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

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

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

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

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

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

Câu 5: Xét đoạn mã giả sau:
```
function example4(n):
if n <= 1: return print("Hello") example4(n / 2) ``` Giả sử phép chia `n/2` làm tròn xuống. Độ phức tạp thời gian của hàm đệ quy `example4(n)` dựa trên số lần gọi hàm đệ quy là gì?

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

Câu 6: Một thuật toán có độ phức tạp thời gian O(n log n). Nếu thuật toán này xử lý dữ liệu có kích thước n=1000 trong khoảng 0.1 giây, ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=10000 sẽ là bao nhiêu?

  • A. Khoảng 1 giây
  • B. Khoảng 10 giây
  • C. Khoảng 1.3 - 1.4 giây
  • D. Khoảng 0.5 giây

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

  • A. Tìm kiếm tuần tự (Linear Search)
  • B. Tìm kiếm nhị phân (Binary Search)
  • C. Tìm kiếm nội suy (Interpolation Search)
  • D. Cả A và B đều có độ phức tạp như nhau

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

  • A. Sắp xếp Chọn (Selection Sort)
  • B. Sắp xếp Nhanh (Quick Sort)
  • C. Sắp xếp Trộn (Merge Sort)
  • D. Sắp xếp Vun đống (Heap Sort)

Câu 9: Xét đoạn mã giả sau:
```
function example5(n):
if n <= 0: return for i from 1 to n: print("Step") example5(n - 1) ``` Độ phức tạp thời gian của hàm đệ quy `example5(n)` dựa trên số lần in "Step" là gì?

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

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

  • A. Truy cập một phần tử tại chỉ mục bất kỳ trong mảng.
  • B. Tìm kiếm một phần tử trong danh sách liên kết đơn.
  • C. Sắp xếp một danh sách.
  • D. Tìm kiếm phần tử lớn nhất trong mảng chưa sắp xếp.

Câu 11: Khi so sánh 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), điều gì xảy ra khi kích thước đầu vào n trở nên rất lớn?

  • A. Thuật toán B sẽ luôn nhanh hơn thuật toán A.
  • B. Thời gian thực hiện của thuật toán B sẽ tăng nhanh hơn nhiều so với thuật toán A.
  • C. Cả hai thuật toán sẽ có thời gian thực hiện tương đương nhau.
  • D. Thuật toán A sẽ không thể xử lý được đầu vào lớn.

Câu 12: Xét đoạn mã giả sau:
```
function example6(n):
sum = 0
i = 1
while i < n: sum = sum + i i = i * 2 return sum ``` Độ phức tạp thời gian của hàm `example6(n)` là gì?

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

Câu 13: Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian O(n log n) trong 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 Trộn (Merge Sort)
  • D. Sắp xếp Chọn (Selection Sort)

Câu 14: Giả sử một thuật toán có độ phức tạp thời gian là O(n³). Nếu thuật toán này mất 1 giây để xử lý dữ liệu có kích thước n=100, ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=200 là bao nhiêu?

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

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

  • A. Là kịch bản đầu vào khiến thuật toán thực hiện ít thao tác nhất.
  • B. Là kịch bản đầu vào khiến thuật toán thực hiện nhiều thao tác nhất.
  • C. Là kịch bản đầu vào ngẫu nhiên điển hình.
  • D. Là kịch bản chỉ xảy ra với đầu vào kích thước nhỏ.

Câu 16: Độ 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 mảng đã được sắp xếp là gì?

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

Câu 17: Xét đoạn mã giả sau:
```
function example7(n):
sum = 0
for i from 1 to n:
sum = sum + i
for j from 1 to n * n:
sum = sum + j
return sum
```
Độ phức tạp thời gian của hàm `example7(n)` là gì?

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

Câu 18: Tại sao độ phức tạp thời gian O(log n) được coi là rất hiệu quả, đặc biệt với đầu vào lớn?

  • A. Vì nó chỉ thực hiện một số thao tác cố định.
  • B. Vì số thao tác cần thiết tăng trưởng rất chậm khi kích thước đầu vào tăng.
  • C. Vì nó luôn nhanh hơn bất kỳ thuật toán nào khác.
  • D. Vì nó chỉ áp dụng cho các bài toán đơn giản.

Câu 19: Khi phân tích độ phức tạp thời gian, "trường hợp xấu nhất" (Worst Case) thường được sử dụng nhất vì lý do nào sau đây?

  • A. Nó cung cấp giới hạn trên cho thời gian thực hiện, đảm bảo hiệu suất tối thiểu.
  • B. Nó là trường hợp dễ phân tích nhất.
  • C. Nó đại diện cho hiệu suất trung bình của thuật toán.
  • D. Đó là kịch bản đầu vào phổ biến nhất.

Câu 20: Xét đoạn mã giả sau:
```
function example8(A, n):
# A là một mảng kích thước n x n
sum = 0
for i from 0 to n-1:
for j from 0 to n-1:
sum = sum + A[i][j]
return sum
```
Độ phức tạp thời gian của hàm `example8(A, n)` là gì?

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

Câu 21: Sắp xếp các độ phức tạp thời gian sau theo thứ tự từ hiệu quả nhất đến kém hiệu quả nhất (tốc độ tăng trưởng chậm nhất đến nhanh nhất) khi n rất lớn: O(n^2), O(log n), O(n), O(1), O(n log n).

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

Câu 22: Một thuật toán tìm kiếm tuần tự (Linear Search) trên mảng kích thước n có độ phức tạp thời gian O(n) trong trường hợp xấu nhất. Nếu mỗi phép so sánh mất 1 micro giây, và bạn có 1 giây (1,000,000 micro giây), kích thước mảng (n) lớn nhất mà thuật toán này có thể xử lý trong 1 giây trong trường hợp xấu nhất là bao nhiêu?

  • A. 100
  • B. 1000
  • C. 100000
  • D. 1000000

Câu 23: Một thuật toán sắp xếp (ví dụ: Selection Sort) có độ phức tạp thời gian O(n^2). Nếu mỗi phép so sánh/hoán đổi cơ bản mất 1 micro giây, và bạn có 1 giây (1,000,000 micro giây), ước tính kích thước mảng (n) lớn nhất mà thuật toán này có thể xử lý trong 1 giây là bao nhiêu?

  • A. 100
  • B. 316
  • C. 1000
  • D. 10000

Câu 24: Xét đoạn mã giả sau:
```
function example9(n):
count = 0
i = n
while i > 0:
count = count + 1
i = i / 2 # Giả sử phép chia làm tròn xuống
return count
```
Độ phức tạp thời gian của hàm `example9(n)` là gì?

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

Câu 25: Độ 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. Các thuật toán chỉ có một vòng lặp đơn giản.
  • B. Các thuật toán sử dụng kỹ thuật "chia để trị" hiệu quả (ví dụ: Merge Sort).
  • C. Các thuật toán có hai vòng lặp lồng nhau.
  • D. Các thuật toán chỉ thực hiện một số bước cố định.

Câu 26: Xét đoạn mã giả sau:
```
function example10(n):
total = 0
for i from 1 to 100:
for j from 1 to n:
total = total + i * j
return total
```
Độ phức tạp thời gian của hàm `example10(n)` là gì?

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

Câu 27: Tại sao việc phân tích độ phức tạp thời gian lại quan trọng trong khoa học máy tính?

  • A. Để biết thuật toán chạy bao nhiêu giây trên một máy tính cụ thể.
  • B. Để xác định số dòng mã trong thuật toán.
  • C. Để dự đoán cách thời gian thực hiện của thuật toán thay đổi khi kích thước đầu vào tăng lên.
  • D. Chỉ quan trọng đối với các thuật toán sắp xếp và tìm kiếm.

Câu 28: Xét đoạn mã giả sau:
```
function example11(n):
count = 0
i = 1
while i * i <= n: count = count + 1 i = i + 1 return count ``` Độ phức tạp thời gian của hàm `example11(n)` là gì?

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

Câu 29: Phát biểu nào sau đây là ĐÚNG khi nói về mối quan hệ giữa độ phức tạp thời gian và hiệu suất thực tế của thuật toán?

  • A. Độ phức tạp thời gian mô tả hành vi tiệm cận (khi n lớn) và là yếu tố chính quyết định hiệu suất cho đầu vào lớn, nhưng hằng số có thể quan trọng với đầu vào nhỏ.
  • B. Độ phức tạp thời gian hoàn toàn quyết định thời gian chạy thực tế trên mọi kích thước đầu vào.
  • C. Các thuật toán có cùng độ phức tạp thời gian luôn có hiệu suất thực tế giống hệt nhau.
  • D. Độ phức tạp thời gian chỉ hữu ích trong lý thuyết, không liên quan đến hiệu suất thực tế.

Câu 30: Xét đoạn mã giả sau:
```
function example12(n):
count = 0
if n > 1000:
for i from 1 to n:
count = count + 1
else:
for i from 1 to 100:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `example12(n)` là gì?

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

1 / 30

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

Tags: Bộ đề 07

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán sử dụng ký hiệu O lớn (Big O), điều gì là mục đích chính của việc bỏ qua các hằng số nhân và các số hạng bậc thấp hơn?

2 / 30

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

Tags: Bộ đề 07

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

3 / 30

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

Tags: Bộ đề 07

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

4 / 30

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

Tags: Bộ đề 07

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

5 / 30

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

Tags: Bộ đề 07

Câu 5: Xét đoạn mã giả sau:
```
function example4(n):
if n <= 1: return print('Hello') example4(n / 2) ``` Giả sử phép chia `n/2` làm tròn xuống. Độ phức tạp thời gian của hàm đệ quy `example4(n)` dựa trên số lần gọi hàm đệ quy là gì?

6 / 30

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

Tags: Bộ đề 07

Câu 6: Một thuật toán có độ phức tạp thời gian O(n log n). Nếu thuật toán này xử lý dữ liệu có kích thước n=1000 trong khoảng 0.1 giây, ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=10000 sẽ là bao nhiêu?

7 / 30

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

Tags: Bộ đề 07

Câu 7: Thuật toán nào sau đây *thường* có độ phức tạp thời gian tốt nhất trong trường hợp xấu nhất để tìm kiếm một phần tử trong một mảng đã được sắp xếp?

8 / 30

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

Tags: Bộ đề 07

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

9 / 30

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

Tags: Bộ đề 07

Câu 9: Xét đoạn mã giả sau:
```
function example5(n):
if n <= 0: return for i from 1 to n: print('Step') example5(n - 1) ``` Độ phức tạp thời gian của hàm đệ quy `example5(n)` dựa trên số lần in 'Step' là gì?

10 / 30

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

Tags: Bộ đề 07

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

11 / 30

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

Tags: Bộ đề 07

Câu 11: Khi so sánh 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), điều gì xảy ra khi kích thước đầu vào n trở nên rất lớn?

12 / 30

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

Tags: Bộ đề 07

Câu 12: Xét đoạn mã giả sau:
```
function example6(n):
sum = 0
i = 1
while i < n: sum = sum + i i = i * 2 return sum ``` Độ phức tạp thời gian của hàm `example6(n)` là gì?

13 / 30

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

Tags: Bộ đề 07

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

14 / 30

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

Tags: Bộ đề 07

Câu 14: Giả sử một thuật toán có độ phức tạp thời gian là O(n³). Nếu thuật toán này mất 1 giây để xử lý dữ liệu có kích thước n=100, ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n=200 là bao nhiêu?

15 / 30

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

Tags: Bộ đề 07

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

16 / 30

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

Tags: Bộ đề 07

Câu 16: Độ 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 mảng *đã được sắp xếp* là gì?

17 / 30

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

Tags: Bộ đề 07

Câu 17: Xét đoạn mã giả sau:
```
function example7(n):
sum = 0
for i from 1 to n:
sum = sum + i
for j from 1 to n * n:
sum = sum + j
return sum
```
Độ phức tạp thời gian của hàm `example7(n)` là gì?

18 / 30

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

Tags: Bộ đề 07

Câu 18: Tại sao độ phức tạp thời gian O(log n) được coi là rất hiệu quả, đặc biệt với đầ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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 19: Khi phân tích độ phức tạp thời gian, 'trường hợp xấu nhất' (Worst Case) thường được sử dụng nhất vì lý do nào sau đây?

20 / 30

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

Tags: Bộ đề 07

Câu 20: Xét đoạn mã giả sau:
```
function example8(A, n):
# A là một mảng kích thước n x n
sum = 0
for i from 0 to n-1:
for j from 0 to n-1:
sum = sum + A[i][j]
return sum
```
Độ phức tạp thời gian của hàm `example8(A, n)` là gì?

21 / 30

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

Tags: Bộ đề 07

Câu 21: Sắp xếp các độ phức tạp thời gian sau theo thứ tự từ hiệu quả nhất đến kém hiệu quả nhất (tốc độ tăng trưởng chậm nhất đến nhanh nhất) khi n rất lớn: O(n^2), O(log n), O(n), O(1), O(n log n).

22 / 30

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

Tags: Bộ đề 07

Câu 22: Một thuật toán tìm kiếm tuần tự (Linear Search) trên mảng kích thước n có độ phức tạp thời gian O(n) trong trường hợp xấu nhất. Nếu mỗi phép so sánh mất 1 micro giây, và bạn có 1 giây (1,000,000 micro giây), kích thước mảng (n) lớn nhất mà thuật toán này có thể xử lý trong 1 giây trong trường hợp xấu nhất là bao nhiêu?

23 / 30

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

Tags: Bộ đề 07

Câu 23: Một thuật toán sắp xếp (ví dụ: Selection Sort) có độ phức tạp thời gian O(n^2). Nếu mỗi phép so sánh/hoán đổi cơ bản mất 1 micro giây, và bạn có 1 giây (1,000,000 micro giây), ước tính kích thước mảng (n) lớn nhất mà thuật toán này có thể xử lý trong 1 giây là bao nhiêu?

24 / 30

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

Tags: Bộ đề 07

Câu 24: Xét đoạn mã giả sau:
```
function example9(n):
count = 0
i = n
while i > 0:
count = count + 1
i = i / 2 # Giả sử phép chia làm tròn xuống
return count
```
Độ phức tạp thời gian của hàm `example9(n)` là gì?

25 / 30

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

Tags: Bộ đề 07

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

26 / 30

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

Tags: Bộ đề 07

Câu 26: Xét đoạn mã giả sau:
```
function example10(n):
total = 0
for i from 1 to 100:
for j from 1 to n:
total = total + i * j
return total
```
Độ phức tạp thời gian của hàm `example10(n)` là gì?

27 / 30

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

Tags: Bộ đề 07

Câu 27: Tại sao việc phân tích độ phức tạp thời gian lại quan trọng trong khoa học máy tính?

28 / 30

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

Tags: Bộ đề 07

Câu 28: Xét đoạn mã giả sau:
```
function example11(n):
count = 0
i = 1
while i * i <= n: count = count + 1 i = i + 1 return count ``` Độ phức tạp thời gian của hàm `example11(n)` là gì?

29 / 30

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

Tags: Bộ đề 07

Câu 29: Phát biểu nào sau đây là ĐÚNG khi nói về mối quan hệ giữa độ phức tạp thời gian và hiệu suất thực 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 07

Câu 30: Xét đoạn mã giả sau:
```
function example12(n):
count = 0
if n > 1000:
for i from 1 to n:
count = count + 1
else:
for i from 1 to 100:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `example12(n)` là gì?

0

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

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


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

Câu 1: Phân tích đoạn mã giả sau:
`function TongMang(A, n):`
` sum = 0`
` for i from 0 to n-1:`
` sum = sum + A[i]`
` return sum`
Độ phức tạp thời gian của hàm `TongMang` theo kích thước mảng `n` là gì?

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

Câu 2: Phân tích đoạn mã giả sau:
`function TimCapTongBangK(A, n, K):`
` for i from 0 to n-1:`
` for j from 0 to n-1:`
` if A[i] + A[j] == K:`
` return (i, j)`
` return (-1, -1)`
Độ phức tạp thời gian của hàm `TimCapTongBangK` trong trường hợp xấu nhất là gì?

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

Câu 3: Phân tích đoạn mã giả sau:
`function DemSoLanChia2(n):`
` count = 0`
` while n > 1:`
` n = n / 2`
` count = count + 1`
` return count`
Độ phức tạp thời gian của hàm `DemSoLanChia2` là gì?

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

Câu 4: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước `n`. Trong trường hợp xấu nhất, phần tử cần tìm nằm ở vị trí nào hoặc không có trong mảng? Điều này dẫn đến độ phức tạp thời gian là O(n).

  • A. Ở vị trí đầu tiên.
  • B. Ở vị trí cuối cùng hoặc không có trong mảng.
  • C. Ở vị trí chính giữa.
  • D. Ở bất kỳ vị trí nào với xác suất như nhau.

Câu 5: Thuật toán sắp xếp chọn (Selection Sort) trên một mảng kích thước `n` luôn có độ phức tạp thời gian O(n^2) ở cả trường hợp tốt nhất, xấu nhất và trung bình. Tại sao?

  • A. Vì thuật toán luôn phải duyệt qua phần còn lại của mảng để tìm phần tử nhỏ nhất trong mỗi bước của vòng lặp ngoài, bất kể mảng đã sắp xếp hay chưa.
  • B. Vì số lần đổi chỗ luôn là n-1.
  • C. Vì thuật toán sử dụng hai vòng lặp lồng nhau mà vòng lặp trong chỉ chạy khi mảng chưa sắp xếp.
  • D. Vì độ phức tạp chỉ phụ thuộc vào số lần so sánh, và số lần so sánh luôn là n^2.

Câu 6: Khi phân tích độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến bậc phức tạp cao nhất (ví dụ: trong O(n^2 + n), ta lấy O(n^2)). Điều này là bởi vì:

  • A. Các hằng số và các số hạng bậc thấp không bao giờ ảnh hưởng đến thời gian chạy.
  • B. Chúng ta chỉ quan tâm đến hiệu suất của thuật toán trên các bộ dữ liệu nhỏ.
  • C. Khi kích thước đầu vào `n` rất lớn, số hạng có bậc cao nhất sẽ chi phối tổng thời gian thực hiện.
  • D. Việc phân tích chi tiết tất cả các số hạng là quá phức tạp và không cần thiết.

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

  • A. Gấp đôi (2 lần)
  • B. Gấp bốn lần (4 lần)
  • C. Gấp sáu lần (6 lần)
  • D. Gấp tám lần (8 lần)

Câu 8: Phân tích đoạn mã giả sau:
`function Xuly(A, n):`
` for i from 0 to n-1:`
` print A[i]`
` for j from 0 to n-1:`
` print A[j]`
Độ phức tạp thời gian của hàm `Xuly` là gì?

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

Câu 9: Phân tích đoạn mã giả sau:
`function Magic(n):`
` if n <= 1: return`
` for i from 1 to 10:`
` print i`
` Magic(n/2)`
Độ phức tạp thời gian của hàm `Magic` là gì?

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

Câu 10: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng kích thước `n`. Trong trường hợp tốt nhất (mảng đã được sắp xếp), độ phức tạp thời gian là O(n). Tại sao?

  • A. Vì thuật toán có thể sử dụng một cờ (flag) để kiểm tra xem có sự đổi chỗ nào xảy ra trong một lần duyệt hay không. Nếu không có đổi chỗ, mảng đã sắp xếp và thuật toán dừng lại sau một lần duyệt toàn bộ mảng (O(n)).
  • B. Vì vòng lặp trong chỉ chạy một lần.
  • C. Vì số lần so sánh trong trường hợp tốt nhất là n/2.
  • D. Vì thuật toán chỉ cần thực hiện các phép so sánh chứ không cần đổi chỗ.

Câu 11: Phân tích đoạn mã giả sau:
`function TinhToanPhucTap(n):`
` for i from 0 to n-1:`
` for j from 0 to i-1:`
` print (i, j)`
Độ phức tạp thời gian của hàm `TinhToanPhucTap` là gì?

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

Câu 12: Giả sử thuật toán A có độ phức tạp O(n^2) và thuật toán B có độ phức tạp O(n log n). Đối với các bộ dữ liệu có kích thước `n` rất lớn, thuật toán nào thường được ưu tiên sử dụng và tại sao?

  • A. Thuật toán A, vì O(n^2) cho biết hiệu suất ổn định hơn.
  • B. Thuật toán B, vì O(n log n) tăng chậm hơn nhiều so với O(n^2) khi n lớn.
  • C. Thuật toán A, vì n^2 luôn lớn hơn n log n.
  • D. Thuật toán B, vì log n luôn nhỏ hơn n.

Câu 13: Phân tích đoạn mã giả sau:
`function ProcessData(arr, n):`
` for i from 0 to n-1:`
` print arr[i]`
` if n > 100:`
` for j from 0 to 99:`
` print arr[j]`
Độ phức tạp thời gian của hàm `ProcessData` là gì?

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

Câu 14: Trong phân tích độ phức tạp thời gian tiệm cận (Asymptotic Time Complexity), ký hiệu O lớn (Big O) thường biểu diễn điều gì?

  • A. Thời gian thực hiện chính xác của thuật toán.
  • B. Giới hạn dưới của thời gian thực hiện trong trường hợp tốt nhất.
  • C. Thời gian thực hiện trung bình của thuật toán.
  • D. Giới hạn trên của thời gian thực hiện trong trường hợp xấu nhất.

Câu 15: Phân tích đoạn mã giả sau:
`function CountPairs(A, n):`
` count = 0`
` for i from 0 to n-2:`
` for j from i+1 to n-1:`
` count = count + 1`
` return count`
Độ phức tạp thời gian của hàm `CountPairs` là gì?

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

Câu 16: Khi so sánh 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), phát biểu nào sau đây là đúng về hiệu suất của chúng khi `n` đủ lớn?

  • A. Thuật toán A luôn chạy nhanh hơn thuật toán B.
  • B. Thuật toán B luôn chạy nhanh hơn thuật toán A.
  • C. Thuật toán A sẽ chạy nhanh hơn thuật toán B một cách đáng kể.
  • D. Không thể so sánh vì thiếu thông tin về hằng số.

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

  • A. Thời gian thực hiện tăng tuyến tính theo kích thước đầu vào.
  • B. Thời gian thực hiện là không đổi, không phụ thuộc vào kích thước đầu vào.
  • C. Thời gian thực hiện tăng theo hàm logarit của kích thước đầu vào.
  • D. Thuật toán không bao giờ dừng lại.

Câu 18: Phân tích đoạn mã giả sau:
`function Example(n):`
` for i from 1 to n:`
` print i`
` for j from 1 to 100:`
` print j`
Độ phức tạp thời gian của hàm `Example` là gì?

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

Câu 19: Phân tích đoạn mã giả sau:
`function AnotherExample(n):`
` i = 1`
` while i < n:`
` print i`
` i = i * 2`
Độ phức tạp thời gian của hàm `AnotherExample` là gì?

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

Câu 20: Trong thuật toán sắp xếp nổi bọt (Bubble Sort), trường hợp nào được coi là trường hợp xấu nhất về thời gian thực hiện?

  • A. Mảng đã được sắp xếp tăng dần.
  • B. Mảng được sắp xếp ngược (giảm dần).
  • C. Tất cả các phần tử trong mảng đều giống nhau.
  • D. Mảng rỗng.

Câu 21: Phân tích đoạn mã giả sau:
`function Calculate(n):`
` result = 0`
` for i from 0 to n*n - 1:`
` result = result + i`
` return result`
Độ phức tạp thời gian của hàm `Calculate` là gì?

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

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

  • A. Tìm kiếm nhị phân (Binary Search) trên mảng đã sắp xếp.
  • B. Tìm kiếm tuần tự (Linear Search).
  • C. Sắp xếp chọn (Selection Sort).
  • D. Duyệt qua tất cả các cặp phần tử trong mảng.

Câu 23: Phân tích đoạn mã giả sau:
`function YetAnotherExample(n):`
` sum = 0`
` for i from 0 to n-1:`
` for j from 0 to 9:`
` sum = sum + i * j`
` return sum`
Độ phức tạp thời gian của hàm `YetAnotherExample` là gì?

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

Câu 24: Phân tích đoạn mã giả sau:
`function ComplexFunction(n):`
` for i from 0 to n-1:`
` print i`
` for j from 0 to n-1:`
` for k from 0 to n-1:`
` print (j, k)`
Độ phức tạp thời gian của hàm `ComplexFunction` là gì?

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

Câu 25: Giả sử bạn có hai hàm: `HamA(n)` có độ phức tạp O(n) và `HamB(m)` có độ phức tạp O(m^2). Nếu bạn gọi `HamA(n)` rồi sau đó gọi `HamB(n)` (với m=n), độ phức tạp tổng thể sẽ là gì?

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

Câu 26: Ý nghĩa của việc phân tích độ phức tạp thời gian của thuật toán là gì?

  • A. Ước lượng cách thời gian thực hiện của thuật toán thay đổi khi kích thước đầu vào tăng lên.
  • B. Đo 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ể.
  • C. Xác định số dòng mã trong thuật toán.
  • D. Chỉ ra thuật toán có chạy đúng hay không.

Câu 27: Phân tích đoạn mã giả sau:
`function DoSomething(n):`
` i = n`
` while i > 0:`
` print i`
` i = i - 1`
` for j from 1 to 5:`
` print j`
Độ phức tạp thời gian của hàm `DoSomething` là gì?

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

Câu 28: Phân tích đoạn mã giả sau:
`function AnalyzeMe(n):`
` for i from 0 to n-1:`
` for j from 0 to 1000:`
` print (i, j)`
Độ phức tạp thời gian của hàm `AnalyzeMe` là gì?

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

Câu 29: Tại sao việc hiểu độ phức tạp thời gian lại quan trọng khi thiết kế thuật toán?

  • A. Để biết thuật toán sẽ chạy chính xác bao nhiêu giây.
  • B. Để chứng minh thuật toán là đúng.
  • C. Để dự đoán hiệu suất của thuật toán với các bộ dữ liệu lớn và so sánh các thuật toán khác nhau.
  • D. Để biết thuật toán sử dụng bao nhiêu bộ nhớ.

Câu 30: Phân tích đoạn mã giả sau:
`function MysteryLoop(n):`
` i = 0`
` while i < n:`
` print i`
` i = i + 3`
Độ phức tạp thời gian của hàm `MysteryLoop` là gì?

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

1 / 30

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

Tags: Bộ đề 08

Câu 1: Phân tích đoạn mã giả sau:
`function TongMang(A, n):`
` sum = 0`
` for i from 0 to n-1:`
` sum = sum + A[i]`
` return sum`
Độ phức tạp thời gian của hàm `TongMang` theo kích thước mảng `n` là gì?

2 / 30

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

Tags: Bộ đề 08

Câu 2: Phân tích đoạn mã giả sau:
`function TimCapTongBangK(A, n, K):`
` for i from 0 to n-1:`
` for j from 0 to n-1:`
` if A[i] + A[j] == K:`
` return (i, j)`
` return (-1, -1)`
Độ phức tạp thời gian của hàm `TimCapTongBangK` trong trường hợp xấu nhất là gì?

3 / 30

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

Tags: Bộ đề 08

Câu 3: Phân tích đoạn mã giả sau:
`function DemSoLanChia2(n):`
` count = 0`
` while n > 1:`
` n = n / 2`
` count = count + 1`
` return count`
Độ phức tạp thời gian của hàm `DemSoLanChia2` là gì?

4 / 30

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

Tags: Bộ đề 08

Câu 4: Thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước `n`. Trong trường hợp xấu nhất, phần tử cần tìm nằm ở vị trí nào hoặc không có trong mảng? Điều này dẫn đến độ phức tạp thời gian là O(n).

5 / 30

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

Tags: Bộ đề 08

Câu 5: Thuật toán sắp xếp chọn (Selection Sort) trên một mảng kích thước `n` luôn có độ phức tạp thời gian O(n^2) ở cả trường hợp tốt nhất, xấu nhất và trung bình. Tại sao?

6 / 30

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

Tags: Bộ đề 08

Câu 6: Khi phân tích độ phức tạp thời gian của một thuật toán, chúng ta thường quan tâm đến bậc phức tạp cao nhất (ví dụ: trong O(n^2 + n), ta lấy O(n^2)). Điều này là bởi vì:

7 / 30

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

Tags: Bộ đề 08

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

8 / 30

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

Tags: Bộ đề 08

Câu 8: Phân tích đoạn mã giả sau:
`function Xuly(A, n):`
` for i from 0 to n-1:`
` print A[i]`
` for j from 0 to n-1:`
` print A[j]`
Độ phức tạp thời gian của hàm `Xuly` là gì?

9 / 30

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

Tags: Bộ đề 08

Câu 9: Phân tích đoạn mã giả sau:
`function Magic(n):`
` if n <= 1: return`
` for i from 1 to 10:`
` print i`
` Magic(n/2)`
Độ phức tạp thời gian của hàm `Magic` là gì?

10 / 30

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

Tags: Bộ đề 08

Câu 10: Thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng kích thước `n`. Trong trường hợp tốt nhất (mảng đã được sắp xếp), độ phức tạp thời gian là O(n). Tại sao?

11 / 30

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

Tags: Bộ đề 08

Câu 11: Phân tích đoạn mã giả sau:
`function TinhToanPhucTap(n):`
` for i from 0 to n-1:`
` for j from 0 to i-1:`
` print (i, j)`
Độ phức tạp thời gian của hàm `TinhToanPhucTap` là gì?

12 / 30

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

Tags: Bộ đề 08

Câu 12: Giả sử thuật toán A có độ phức tạp O(n^2) và thuật toán B có độ phức tạp O(n log n). Đối với các bộ dữ liệu có kích thước `n` rất lớn, thuật toán nào thường được ưu tiên sử dụng và tại sao?

13 / 30

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

Tags: Bộ đề 08

Câu 13: Phân tích đoạn mã giả sau:
`function ProcessData(arr, n):`
` for i from 0 to n-1:`
` print arr[i]`
` if n > 100:`
` for j from 0 to 99:`
` print arr[j]`
Độ phức tạp thời gian của hàm `ProcessData` là gì?

14 / 30

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

Tags: Bộ đề 08

Câu 14: Trong phân tích độ phức tạp thời gian tiệm cận (Asymptotic Time Complexity), ký hiệu O lớn (Big O) thường biểu diễn điều gì?

15 / 30

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

Tags: Bộ đề 08

Câu 15: Phân tích đoạn mã giả sau:
`function CountPairs(A, n):`
` count = 0`
` for i from 0 to n-2:`
` for j from i+1 to n-1:`
` count = count + 1`
` return count`
Độ phức tạp thời gian của hàm `CountPairs` là gì?

16 / 30

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

Tags: Bộ đề 08

Câu 16: Khi so sánh 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), phát biểu nào sau đây là đúng về hiệu suất của chúng khi `n` đủ lớn?

17 / 30

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

Tags: Bộ đề 08

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

18 / 30

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

Tags: Bộ đề 08

Câu 18: Phân tích đoạn mã giả sau:
`function Example(n):`
` for i from 1 to n:`
` print i`
` for j from 1 to 100:`
` print j`
Độ phức tạp thời gian của hàm `Example` là gì?

19 / 30

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

Tags: Bộ đề 08

Câu 19: Phân tích đoạn mã giả sau:
`function AnotherExample(n):`
` i = 1`
` while i < n:`
` print i`
` i = i * 2`
Độ phức tạp thời gian của hàm `AnotherExample` là gì?

20 / 30

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

Tags: Bộ đề 08

Câu 20: Trong thuật toán sắp xếp nổi bọt (Bubble Sort), trường hợp nào được coi là trường hợp xấu nhất về thời gian thực hiện?

21 / 30

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

Tags: Bộ đề 08

Câu 21: Phân tích đoạn mã giả sau:
`function Calculate(n):`
` result = 0`
` for i from 0 to n*n - 1:`
` result = result + i`
` return result`
Độ phức tạp thời gian của hàm `Calculate` là gì?

22 / 30

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

Tags: Bộ đề 08

Câu 22: Độ phức tạp O(log 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 08

Câu 23: Phân tích đoạn mã giả sau:
`function YetAnotherExample(n):`
` sum = 0`
` for i from 0 to n-1:`
` for j from 0 to 9:`
` sum = sum + i * j`
` return sum`
Độ phức tạp thời gian của hàm `YetAnotherExample` là gì?

24 / 30

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

Tags: Bộ đề 08

Câu 24: Phân tích đoạn mã giả sau:
`function ComplexFunction(n):`
` for i from 0 to n-1:`
` print i`
` for j from 0 to n-1:`
` for k from 0 to n-1:`
` print (j, k)`
Độ phức tạp thời gian của hàm `ComplexFunction` là gì?

25 / 30

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

Tags: Bộ đề 08

Câu 25: Giả sử bạn có hai hàm: `HamA(n)` có độ phức tạp O(n) và `HamB(m)` có độ phức tạp O(m^2). Nếu bạn gọi `HamA(n)` rồi sau đó gọi `HamB(n)` (với m=n), độ phức tạp tổng thể sẽ là gì?

26 / 30

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

Tags: Bộ đề 08

Câu 26: Ý nghĩa của việc phân tích độ phức tạp thời gian của thuật toán là gì?

27 / 30

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

Tags: Bộ đề 08

Câu 27: Phân tích đoạn mã giả sau:
`function DoSomething(n):`
` i = n`
` while i > 0:`
` print i`
` i = i - 1`
` for j from 1 to 5:`
` print j`
Độ phức tạp thời gian của hàm `DoSomething` là gì?

28 / 30

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

Tags: Bộ đề 08

Câu 28: Phân tích đoạn mã giả sau:
`function AnalyzeMe(n):`
` for i from 0 to n-1:`
` for j from 0 to 1000:`
` print (i, j)`
Độ phức tạp thời gian của hàm `AnalyzeMe` là gì?

29 / 30

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

Tags: Bộ đề 08

Câu 29: Tại sao việc hiểu độ phức tạp thời gian lại quan trọng khi thiết kế thuật toán?

30 / 30

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

Tags: Bộ đề 08

Câu 30: Phân tích đoạn mã giả sau:
`function MysteryLoop(n):`
` i = 0`
` while i < n:`
` print i`
` i = i + 3`
Độ phức tạp thời gian của hàm `MysteryLoop` là gì?

0

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

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


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

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán bằng ký hiệu O lớn (Big O), chúng ta quan tâm chủ yếu đến yếu tố nào khi kích thước đầu vào (n) rất lớn?

  • A. Các hằng số nhân
  • B. Các số hạng bậc thấp
  • C. Thời gian thực thi trên một máy tính cụ thể
  • D. Tốc độ tăng trưởng của số phép toán cơ bản theo n

Câu 2: Xét đoạn mã giả sau:
```
function Example(n):
sum = 0
for i from 1 to n:
sum = sum + i
return sum
```
Độ phức tạp thời gian của hàm `Example(n)` là gì?

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

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

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

Câu 4: Thuật toán tìm kiếm tuần tự (Linear Search) trong một mảng gồm n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là O(n). Trường hợp xấu nhất này xảy ra khi nào?

  • A. Phần tử cần tìm là phần tử đầu tiên của mảng.
  • B. Phần tử cần tìm là phần tử cuối cùng của mảng hoặc không có trong mảng.
  • C. Mảng đã được sắp xếp theo thứ tự tăng dần.
  • D. Mảng có kích thước nhỏ hơn 100 phần tử.

Câu 5: Một thuật toán có độ phức tạp thời gian là O(n^2). Nếu với đầu vào có kích thước n = 100, thuật toán chạy mất khoảng 10 mili giây. Ước tính thời gian chạy của thuật toán này với đầu vào có kích thước n = 1000 là bao nhiêu?

  • A. 100 mili giây
  • B. 1 giây
  • C. 1000 mili giây (1 giây)
  • D. 10 giây

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

  • A. Tìm kiếm nhị phân (Binary Search) trên mảng đã sắp xếp.
  • B. Tìm kiếm tuần tự (Linear Search) trên mảng bất kỳ.
  • C. Sắp xếp chọn (Selection Sort).
  • D. Duyệt qua tất cả các cặp phần tử trong mảng.

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

  • A. Thuật toán A.
  • B. Thuật toán B.
  • C. Cả hai thuật toán có hiệu quả như nhau.
  • D. Không thể so sánh nếu không biết các hằng số.

Câu 8: Xét đoạn mã giả sau:
```
function AnotherExample(n):
for i from 1 to n:
// Các thao tác có độ phức tạp O(1)
for j from 1 to n*n:
// Các thao tác có độ phức tạp O(1)
```
Độ phức tạp thời gian tổng thể của hàm `AnotherExample(n)` là gì?

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

Câu 9: Thuật toán sắp xếp chọn (Selection Sort) hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất (hoặc lớn nhất) trong phần chưa được sắp xếp của mảng và hoán đổi nó với phần tử ở vị trí đầu tiên của phần chưa được sắp xếp đó. Thao tác nào trong Selection Sort đóng góp chính vào độ phức tạp O(n^2) của nó?

  • A. Thao tác hoán đổi (swap) hai phần tử.
  • B. Thao tác tìm phần tử nhỏ nhất (hoặc lớn nhất) trong phần mảng còn lại.
  • C. Việc khởi tạo các biến đếm.
  • D. Thao tác truy cập một phần tử theo chỉ số.

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

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

Câu 11: Xét đoạn mã giả:
```
function Power(base, exp):
if exp == 0:
return 1
else:
return base * Power(base, exp - 1)
```
Độ phức tạp thời gian của hàm đệ quy `Power(base, exp)` theo `exp` là gì?

  • A. O(1)
  • B. O(log exp)
  • C. O(exp)
  • D. O(base * exp)

Câu 12: 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 tốt nhất (khi mảng đã sắp xếp) là gì?

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

Câu 13: Khi so sánh O(n) và O(n^2), tại sao O(n^2) lại kém hiệu quả hơn đáng kể so với O(n) khi n lớn?

  • A. Vì hàm n^2 tăng nhanh hơn rất nhiều so với hàm n khi n tăng.
  • B. Vì thuật toán O(n^2) luôn có nhiều dòng mã hơn.
  • C. Vì thuật toán O(n) sử dụng ít bộ nhớ hơn.
  • D. Vì O(n^2) chỉ dùng cho các bài toán khó hơn.

Câu 14: Xét đoạn mã giả sau:
```
function ProcessArray(arr, n):
max_val = arr[0]
for i from 1 to n-1:
if arr[i] > max_val:
max_val = arr[i]
// Một số thao tác khác không phụ thuộc vào n
return max_val
```
Độ phức tạp thời gian của hàm `ProcessArray(arr, n)` là gì?

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

Câu 15: Một thuật toán cần thực hiện N phép toán cơ bản để xử lý đầu vào có kích thước n. Nếu N = 5n^3 + 2n^2 + 100. Khi sử dụng ký hiệu O lớn, độ phức tạp thời gian của thuật toán này là gì?

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

Câu 16: Đối với thuật toán tìm kiếm tuần tự (Linear Search), độ phức tạp thời gian trong trường hợp tốt nhất là O(1). Trường hợp tốt nhất này xảy ra khi nào?

  • A. Phần tử cần tìm là phần tử đầu tiên của mảng.
  • B. Phần tử cần tìm là phần tử cuối cùng của mảng.
  • C. Phần tử cần tìm nằm ở giữa mảng.
  • D. Mảng có kích thước rất lớn.

Câu 17: Tại sao khi phân tích độ phức tạp bằng ký hiệu O lớn, chúng ta thường bỏ qua các hằng số nhân?

  • A. Vì hằng số luôn bằng 1.
  • B. Vì khi n đủ lớn, tốc độ tăng trưởng của hàm được quyết định bởi số hạng bậc cao nhất, không phải hằng số.
  • C. Vì hằng số phụ thuộc vào ngôn ngữ lập trình.
  • D. Vì hằng số chỉ ảnh hưởng đến bộ nhớ sử dụng.

Câu 18: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về tốc độ tăng trưởng (từ chậm nhất đến nhanh nhất): O(n), O(log n), O(n^2), O(1).

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

Câu 19: Xét đoạn mã giả sau:
```
function ExampleLoop(n):
i = 1
while i < n: // Các thao tác có độ phức tạp O(1) i = i * 2 ``` Độ phức tạp thời gian của hàm `ExampleLoop(n)` là gì?

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

Câu 20: Nếu một thuật toán có độ phức tạp O(n log n) chạy mất 1 giây với n = 1000. Ước tính thời gian chạy của thuật toán này với n = 1000000?

  • A. Khoảng 100 giây.
  • B. Khoảng 1000 giây.
  • C. Khoảng 3000 giây.
  • D. Khoảng 2000 giây. (n log n: 1000 log 1000 ~ 1000 * 10 = 10000. 1000000 log 1000000 ~ 1000000 * 20 = 20000000. Tỉ lệ thời gian ~ (20M / 10k) = 2000 lần. 1 giây * 2000 = 2000 giây).

Câu 21: 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à O(n^2). Trường hợp xấu nhất này xảy ra khi nào?

  • A. Mảng đã được sắp xếp theo thứ tự tăng dần.
  • B. Mảng đã được sắp xếp theo thứ tự giảm dần.
  • C. Mảng đã được sắp xếp ngược lại với thứ tự mong muốn (ví dụ: muốn tăng dần nhưng mảng đang giảm dần).
  • D. Mảng chứa các phần tử giống nhau.

Câu 22: Xét đoạn mã giả sau:
```
function ExampleConditional(n):
if n > 1000:
for i from 1 to n*n:
// O(1) operations
else:
for i from 1 to n:
// O(1) operations
```
Độ phức tạp thời gian của hàm `ExampleConditional(n)` là gì?

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

Câu 23: Trong phân tích độ phức tạp, tại sao chúng ta thường quan tâm đến trường hợp xấu nhất (worst-case) của thuật toán?

  • A. Để đảm bảo rằng thuật toán vẫn có thể hoàn thành trong một khoảng thời gian chấp nhận được ngay cả trong điều kiện khó khăn nhất.
  • B. Vì trường hợp xấu nhất là trường hợp dễ phân tích nhất.
  • C. Vì trường hợp xấu nhất là trường hợp xảy ra thường xuyên nhất.
  • D. Vì trường hợp xấu nhất cung cấp kết quả nhanh nhất.

Câu 24: Xét đoạn mã giả sau:
```
function ComplexFunction(n):
for i from 1 to n:
// O(1) operations
for j from 1 to n:
for k from 1 to n:
// O(1) operations
```
Độ phức tạp thời gian của hàm `ComplexFunction(n)` là gì?

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

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

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

Câu 26: 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^2) và thuật toán B có độ phức tạp O(n log n). Với đầu vào kích thước N = 10^6, thuật toán nào có khả năng hoàn thành trong thời gian hợp lý (ví dụ: vài giây đến vài phút) trên máy tính hiện đại?

  • A. Thuật toán A (O(n^2))
  • B. Thuật toán B (O(n log n))
  • C. Cả hai đều quá chậm.
  • D. Cả hai đều đủ nhanh.

Câu 27: Xét đoạn mã giả sau:
```
function AnalyzeData(n):
if n < 10: // O(1) operations else: for i from 1 to n: for j from 1 to 100: // O(1) operations ``` Độ phức tạp thời gian của hàm `AnalyzeData(n)` là gì?

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

Câu 28: Thuật toán sắp xếp nào trong các lựa chọn dưới đây không có độ phức tạp thời gian trường hợp xấu nhất là O(n^2)?

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

Câu 29: Nếu một thuật toán cần thực hiện số phép toán là T(n) = n * (n - 1) / 2. Khi biểu diễn bằng ký hiệu O lớn, độ phức tạp thời gian của thuật toán này là gì?

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

Câu 30: Độ phức tạp thời gian O(n!) (giai thừa) và O(2^n) (hàm mũ) được coi là rất kém hiệu quả. Chúng thường xuất hiện trong các bài toán có tính chất gì?

  • A. Các bài toán tìm kiếm đơn giản.
  • B. Các bài toán sắp xếp hiệu quả.
  • C. Các bài toán duyệt toàn bộ không gian trạng thái hoặc tổ hợp (ví dụ: Bài toán người du lịch, tìm tất cả hoán vị).
  • D. Các bài toán xử lý dữ liệu lớn trên cơ sở dữ liệu.

1 / 30

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

Tags: Bộ đề 09

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán bằng ký hiệu O lớn (Big O), chúng ta quan tâm chủ yếu đến yếu tố nào khi kích thước đầu vào (n) rất lớn?

2 / 30

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

Tags: Bộ đề 09

Câu 2: Xét đoạn mã giả sau:
```
function Example(n):
sum = 0
for i from 1 to n:
sum = sum + i
return sum
```
Độ phức tạp thời gian của hàm `Example(n)` là gì?

3 / 30

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

Tags: Bộ đề 09

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

4 / 30

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

Tags: Bộ đề 09

Câu 4: Thuật toán tìm kiếm tuần tự (Linear Search) trong một mảng gồm n phần tử có độ phức tạp thời gian trong trường hợp xấu nhất là O(n). Trường hợp xấu nhất này xảy ra khi nào?

5 / 30

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

Tags: Bộ đề 09

Câu 5: Một thuật toán có độ phức tạp thời gian là O(n^2). Nếu với đầu vào có kích thước n = 100, thuật toán chạy mất khoảng 10 mili giây. Ước tính thời gian chạy của thuật toán này với đầu vào có kích thước n = 1000 là bao nhiêu?

6 / 30

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

Tags: Bộ đề 09

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

7 / 30

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

Tags: Bộ đề 09

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

8 / 30

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

Tags: Bộ đề 09

Câu 8: Xét đoạn mã giả sau:
```
function AnotherExample(n):
for i from 1 to n:
// Các thao tác có độ phức tạp O(1)
for j from 1 to n*n:
// Các thao tác có độ phức tạp O(1)
```
Độ phức tạp thời gian tổng thể của hàm `AnotherExample(n)` là gì?

9 / 30

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

Tags: Bộ đề 09

Câu 9: Thuật toán sắp xếp chọn (Selection Sort) hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất (hoặc lớn nhất) trong phần chưa được sắp xếp của mảng và hoán đổi nó với phần tử ở vị trí đầu tiên của phần chưa được sắp xếp đó. Thao tác nào trong Selection Sort đóng góp chính vào độ phức tạp O(n^2) của nó?

10 / 30

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

Tags: Bộ đề 09

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

11 / 30

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

Tags: Bộ đề 09

Câu 11: Xét đoạn mã giả:
```
function Power(base, exp):
if exp == 0:
return 1
else:
return base * Power(base, exp - 1)
```
Độ phức tạp thời gian của hàm đệ quy `Power(base, exp)` theo `exp` là gì?

12 / 30

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

Tags: Bộ đề 09

Câu 12: 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 tốt nhất (khi mảng đã sắp xếp) là gì?

13 / 30

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

Tags: Bộ đề 09

Câu 13: Khi so sánh O(n) và O(n^2), tại sao O(n^2) lại kém hiệu quả hơn đáng kể so với O(n) khi n lớn?

14 / 30

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

Tags: Bộ đề 09

Câu 14: Xét đoạn mã giả sau:
```
function ProcessArray(arr, n):
max_val = arr[0]
for i from 1 to n-1:
if arr[i] > max_val:
max_val = arr[i]
// Một số thao tác khác không phụ thuộc vào n
return max_val
```
Độ phức tạp thời gian của hàm `ProcessArray(arr, n)` là gì?

15 / 30

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

Tags: Bộ đề 09

Câu 15: Một thuật toán cần thực hiện N phép toán cơ bản để xử lý đầu vào có kích thước n. Nếu N = 5n^3 + 2n^2 + 100. Khi sử dụng ký hiệu O lớn, độ phức tạp thời gian của thuật toán này là gì?

16 / 30

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

Tags: Bộ đề 09

Câu 16: Đối với thuật toán tìm kiếm tuần tự (Linear Search), độ phức tạp thời gian trong trường hợp tốt nhất là O(1). Trường hợp tốt nhất này xảy ra khi nào?

17 / 30

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

Tags: Bộ đề 09

Câu 17: Tại sao khi phân tích độ phức tạp bằng ký hiệu O lớn, chúng ta thường bỏ qua các hằng số nhân?

18 / 30

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

Tags: Bộ đề 09

Câu 18: Sắp xếp các độ phức tạp thời gian sau theo thứ tự tăng dần về tốc độ tăng trưởng (từ chậm nhất đến nhanh nhất): O(n), O(log n), O(n^2), O(1).

19 / 30

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

Tags: Bộ đề 09

Câu 19: Xét đoạn mã giả sau:
```
function ExampleLoop(n):
i = 1
while i < n: // Các thao tác có độ phức tạp O(1) i = i * 2 ``` Độ phức tạp thời gian của hàm `ExampleLoop(n)` là gì?

20 / 30

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

Tags: Bộ đề 09

Câu 20: Nếu một thuật toán có độ phức tạp O(n log n) chạy mất 1 giây với n = 1000. Ước tính thời gian chạy của thuật toán này với n = 1000000?

21 / 30

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

Tags: Bộ đề 09

Câu 21: 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à O(n^2). Trường hợp xấu nhất này xảy ra khi nào?

22 / 30

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

Tags: Bộ đề 09

Câu 22: Xét đoạn mã giả sau:
```
function ExampleConditional(n):
if n > 1000:
for i from 1 to n*n:
// O(1) operations
else:
for i from 1 to n:
// O(1) operations
```
Độ phức tạp thời gian của hàm `ExampleConditional(n)` là gì?

23 / 30

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

Tags: Bộ đề 09

Câu 23: Trong phân tích độ phức tạp, tại sao chúng ta thường quan tâm đến trường hợp xấu nhất (worst-case) 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 09

Câu 24: Xét đoạn mã giả sau:
```
function ComplexFunction(n):
for i from 1 to n:
// O(1) operations
for j from 1 to n:
for k from 1 to n:
// O(1) operations
```
Độ phức tạp thời gian của hàm `ComplexFunction(n)` là gì?

25 / 30

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

Tags: Bộ đề 09

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

26 / 30

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

Tags: Bộ đề 09

Câu 26: 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^2) và thuật toán B có độ phức tạp O(n log n). Với đầu vào kích thước N = 10^6, thuật toán nào có khả năng hoàn thành trong thời gian hợp lý (ví dụ: vài giây đến vài phút) trên máy tính hiện đại?

27 / 30

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

Tags: Bộ đề 09

Câu 27: Xét đoạn mã giả sau:
```
function AnalyzeData(n):
if n < 10: // O(1) operations else: for i from 1 to n: for j from 1 to 100: // O(1) operations ``` Độ phức tạp thời gian của hàm `AnalyzeData(n)` là gì?

28 / 30

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

Tags: Bộ đề 09

Câu 28: Thuật toán sắp xếp nào trong các lựa chọn dưới đây *không* có độ phức tạp thời gian trường hợp xấu nhất là O(n^2)?

29 / 30

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

Tags: Bộ đề 09

Câu 29: Nếu một thuật toán cần thực hiện số phép toán là T(n) = n * (n - 1) / 2. Khi biểu diễn bằng ký hiệu O lớn, độ phức tạp thời gian của thuật toán này là gì?

30 / 30

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

Tags: Bộ đề 09

Câu 30: Độ phức tạp thời gian O(n!) (giai thừa) và O(2^n) (hàm mũ) được coi là rất kém hiệu quả. Chúng thường xuất hiện trong các bài toán có tính chất gì?

0

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

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


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

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu O lớn (Big O notation) 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. Số bước thực hiện trung bình của thuật toán.
  • C. Giới hạn trên của tốc độ tăng trưởng thời gian thực hiện khi kích thước dữ liệu đầu vào tăng lên.
  • D. Bộ nhớ sử dụng bởi thuật toán.

Câu 2: Xét đoạn mã giả sau:
```
function process(n):
sum = 0
for i from 1 to n:
sum = sum + i
return sum
```
Độ phức tạp thời gian của hàm `process(n)` là bao nhiêu?

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

Câu 3: Xét đoạn mã giả sau:
```
function analyze(n):
count = 0
for i from 1 to n:
for j from 1 to n:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `analyze(n)` là bao nhiêu?

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

Câu 4: Xét đoạn mã giả sau:
```
function calculate(n):
result = 0
for i from 1 to n:
for j from i to n:
result = result + 1
return result
```
Độ phức tạp thời gian của hàm `calculate(n)` là bao nhiêu?

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

Câu 5: Một thuật toán tìm kiếm trong một mảng đã được sắp xếp bằng cách liên tục chia đôi phạm vi tìm kiếm. Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán này là gì?

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

Câu 6: Thuật toán Sắp xếp chọn (Selection Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Điều này có nghĩa là gì khi kích thước mảng đầu vào (n) tăng gấp đôi?

  • A. Thời gian thực hiện sẽ tăng khoảng 4 lần.
  • B. Thời gian thực hiện sẽ tăng gấp đôi.
  • C. Thời gian thực hiện sẽ tăng khoảng log(2) lần.
  • D. Thời gian thực hiện sẽ không thay đổi.

Câu 7: Thuật toán Tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất của thuật toán này là gì?

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

Câu 8: Thuật toán Sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất (khi mảng đã được sắp xếp) là gì?

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

Câu 9: Thuật toán Sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp xấu nhất là gì?

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

Câu 10: Trong phân tích độ phức tạp thời gian O lớn, chúng ta thường bỏ qua các hằng số nhân và các số hạng bậc thấp. Ví dụ, một thuật toán có số bước là 3n^2 + 2n + 5 sẽ được biểu diễn là O(n^2). Tại sao lại làm như vậy?

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

Câu 11: Một thuật toán có độ phức tạp O(n log n). Nếu thuật toán này mất 0.5 giây để xử lý dữ liệu có kích thước n = 1000, ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n = 2000?

  • A. Khoảng 0.75 giây
  • B. Khoảng 1.1 giây
  • C. Khoảng 2.0 giây
  • D. Khoảng 2.5 giây

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

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

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

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

Câu 14: Xét đoạn mã giả sau:
```
function doSomething(n):
for i from 1 to 100:
print(i)
for j from 1 to n:
print(j)
```
Độ phức tạp thời gian của hàm `doSomething(n)` là bao nhiêu?

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

Câu 15: Xét đoạn mã giả sau:
```
function processData(arr):
n = arr.length
if n <= 1: return mid = n / 2 processData(arr[0...mid-1]) processData(arr[mid...n-1]) // some O(n) operation here to combine results ``` Đoạn mã này mô tả cấu trúc của một thuật toán "chia để trị" (Divide and Conquer). Nếu bước kết hợp tốn O(n), độ phức tạp thời gian tổng thể của thuật toán này có thể là bao nhiêu?

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

Câu 16: Khi so sánh hai thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2), thuật toán nào sẽ có hiệu suất tốt hơn khi xử lý lượng dữ liệu lớn?

  • A. Thuật toán A
  • B. Thuật toán B
  • C. Cả hai có hiệu suất như nhau
  • D. Không thể xác định chỉ dựa vào độ phức tạp O lớn

Câu 17: Một thuật toán mất 10 giây để hoàn thành với dữ liệu đầu vào có kích thước n = 1000. Nếu độ phức tạp của thuật toán là O(n^3), ước tính thời gian cần thiết để hoàn thành với dữ liệu đầu vào có kích thước n = 2000?

  • A. 20 giây
  • B. 40 giây
  • C. 80 giây
  • D. Không đủ thông tin để ước tính chính xác

Câu 18: Xét đoạn mã giả sau:
```
function complexFunc(n):
sum1 = 0
for i from 1 to n:
sum1 = sum1 + i

sum2 = 0
for j from 1 to n:
for k from 1 to n:
sum2 = sum2 + j*k

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

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

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

  • A. Tìm kiếm nhị phân (Binary Search) - Lưu ý: Đây là tìm kiếm, không phải sắp xếp
  • B. Sắp xếp trộn (Merge Sort)
  • C. Sắp xếp nhanh (Quick Sort) - Trường hợp trung bình là O(n log n), nhưng xấu nhất là O(n^2)
  • D. Sắp xếp chèn (Insertion Sort)

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

  • A. Vì đó là trường hợp phổ biến nhất xảy ra.
  • B. Vì nó cung cấp một giới hạn trên đảm bảo về hiệu suất của thuật toán, bất kể dữ liệu đầu vào là gì.
  • C. Vì nó dễ tính toán nhất.
  • D. Vì nó cho biết hiệu suất tốt nhất có thể đạt được.

Câu 21: Xét đoạn mã giả sau:
```
function processArray(arr):
n = arr.length
if n == 0:
return 0
if n == 1:
return arr[0]

sum = 0
for x in arr:
sum = sum + x
return sum
```
Độ phức tạp thời gian của hàm `processArray(arr)` là bao nhiêu?

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

Câu 22: Một thuật toán có độ phức tạp O(log n). Nếu nó mất 0.1 giây cho n = 1024, ước tính thời gian cho n = 4096?

  • A. Khoảng 0.12 giây
  • B. Khoảng 0.2 giây
  • C. Khoảng 0.4 giây
  • D. Khoảng 0.8 giây

Câu 23: Xét đoạn mã giả sau:
```
function find_pair(arr, target):
n = arr.length
for i from 0 to n-2:
for j from i+1 to n-1:
if arr[i] + arr[j] == target:
return true
return false
```
Độ phức tạp thời gian của hàm `find_pair(arr, target)` là bao nhiêu?

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

Câu 24: Khi so sánh O(n log n) và O(n^2), thuật toán có độ phức tạp O(n log n) thường được ưa chuộng hơn cho các bài toán sắp xếp trên tập dữ liệu lớn. Điều này là do:

  • A. n log n luôn nhỏ hơn n^2.
  • B. Tốc độ tăng trưởng của n log n chậm hơn đáng kể so với n^2 khi n lớn.
  • C. Các thuật toán O(n log n) dễ cài đặt hơn.
  • D. Các thuật toán O(n log n) sử dụng ít bộ nhớ hơn.

Câu 25: Xét đoạn mã giả sau:
```
function mystery(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của hàm `mystery(n)` là bao nhiêu?

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

Câu 26: Nếu một thuật toán có độ phức tạp O(n), và mất 5 giây để xử lý 100.000 phần tử, thì ước tính thời gian cần thiết để xử lý 500.000 phần tử là bao nhiêu?

  • A. 10 giây
  • B. 15 giây
  • C. 25 giây
  • D. 50 giây

Câu 27: Xét đoạn mã giả sau:
```
function anotherFunc(n):
for i from 1 to n:
// Một phép tính O(1) ở đây

for j from 1 to n:
for k from 1 to 10:
// Một phép tính O(1) ở đây
```
Độ phức tạp thời gian của hàm `anotherFunc(n)` là bao nhiêu?

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

Câu 28: Độ phức tạp thời gian trung bình (average-case) của một thuật toán là gì?

  • A. Thời gian thực hiện trung bình trên tất cả các bộ dữ liệu đầu vào có cùng kích thước.
  • B. Thời gian thực hiện tốt nhất có thể đạt được.
  • C. Thời gian thực hiện lâu nhất có thể xảy ra.
  • D. Độ phức tạp chỉ áp dụng cho các thuật toán ngẫu nhiên.

Câu 29: Tại sao thuật toán Tìm kiếm nhị phân (Binary Search) yêu cầu mảng đầu vào phải được sắp xếp?

  • A. Để giảm độ phức tạp thời gian xuống O(log n).
  • B. Để đảm bảo phần tử cần tìm luôn tồn tại trong mảng.
  • C. Vì thuật toán dựa vào việc so sánh phần tử cần tìm với phần tử ở giữa và loại bỏ một nửa mảng dựa trên thứ tự.
  • D. Để sử dụng ít bộ nhớ hơn.

Câu 30: Xét đoạn mã giả sau:
```
function processNested(n):
count = 0
for i from 1 to n:
for j from 1 to i:
for k from 1 to 5:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `processNested(n)` là bao nhiêu?

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

1 / 30

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

Tags: Bộ đề 10

Câu 1: Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu O lớn (Big O notation) 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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 2: Xét đoạn mã giả sau:
```
function process(n):
sum = 0
for i from 1 to n:
sum = sum + i
return sum
```
Độ phức tạp thời gian của hàm `process(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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 3: Xét đoạn mã giả sau:
```
function analyze(n):
count = 0
for i from 1 to n:
for j from 1 to n:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `analyze(n)` là bao nhiêu?

4 / 30

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

Tags: Bộ đề 10

Câu 4: Xét đoạn mã giả sau:
```
function calculate(n):
result = 0
for i from 1 to n:
for j from i to n:
result = result + 1
return result
```
Độ phức tạp thời gian của hàm `calculate(n)` là bao nhiêu?

5 / 30

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

Tags: Bộ đề 10

Câu 5: Một thuật toán tìm kiếm trong một mảng đã được sắp xếp bằng cách liên tục chia đôi phạm vi tìm kiếm. Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán này là gì?

6 / 30

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

Tags: Bộ đề 10

Câu 6: Thuật toán Sắp xếp chọn (Selection Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là O(n^2). Điều này có nghĩa là gì khi kích thước mảng đầ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 25: Thực hành xác định độ phức tạp thời gian thuật toán

Tags: Bộ đề 10

Câu 7: Thuật toán Tìm kiếm tuần tự (Linear Search) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất của thuật toán này là gì?

8 / 30

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

Tags: Bộ đề 10

Câu 8: Thuật toán Sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp tốt nhất (khi mảng đã được sắp xếp) là gì?

9 / 30

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

Tags: Bộ đề 10

Câu 9: Thuật toán Sắp xếp nổi bọt (Bubble Sort) trên một mảng có kích thước n. Độ phức tạp thời gian trong trường hợp xấu nhất là gì?

10 / 30

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

Tags: Bộ đề 10

Câu 10: Trong phân tích độ phức tạp thời gian O lớn, chúng ta thường bỏ qua các hằng số nhân và các số hạng bậc thấp. Ví dụ, một thuật toán có số bước là 3n^2 + 2n + 5 sẽ được biểu diễn là O(n^2). Tại sao lại làm như vậy?

11 / 30

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

Tags: Bộ đề 10

Câu 11: Một thuật toán có độ phức tạp O(n log n). Nếu thuật toán này mất 0.5 giây để xử lý dữ liệu có kích thước n = 1000, ước tính thời gian cần thiết để xử lý dữ liệu có kích thước n = 2000?

12 / 30

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

Tags: Bộ đề 10

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

13 / 30

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

Tags: Bộ đề 10

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

14 / 30

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

Tags: Bộ đề 10

Câu 14: Xét đoạn mã giả sau:
```
function doSomething(n):
for i from 1 to 100:
print(i)
for j from 1 to n:
print(j)
```
Độ phức tạp thời gian của hàm `doSomething(n)` là bao nhiêu?

15 / 30

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

Tags: Bộ đề 10

Câu 15: Xét đoạn mã giả sau:
```
function processData(arr):
n = arr.length
if n <= 1: return mid = n / 2 processData(arr[0...mid-1]) processData(arr[mid...n-1]) // some O(n) operation here to combine results ``` Đoạn mã này mô tả cấu trúc của một thuật toán 'chia để trị' (Divide and Conquer). Nếu bước kết hợp tốn O(n), độ phức tạp thời gian tổng thể của thuật toán này có thể là bao nhiêu?

16 / 30

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

Tags: Bộ đề 10

Câu 16: Khi so sánh hai thuật toán A có độ phức tạp O(n) và thuật toán B có độ phức tạp O(n^2), thuật toán nào sẽ có hiệu suất tốt hơn khi xử lý lượng dữ liệu lớn?

17 / 30

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

Tags: Bộ đề 10

Câu 17: Một thuật toán mất 10 giây để hoàn thành với dữ liệu đầu vào có kích thước n = 1000. Nếu độ phức tạp của thuật toán là O(n^3), ước tính thời gian cần thiết để hoàn thành với dữ liệu đầu vào có kích thước n = 2000?

18 / 30

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

Tags: Bộ đề 10

Câu 18: Xét đoạn mã giả sau:
```
function complexFunc(n):
sum1 = 0
for i from 1 to n:
sum1 = sum1 + i

sum2 = 0
for j from 1 to n:
for k from 1 to n:
sum2 = sum2 + j*k

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

19 / 30

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

Tags: Bộ đề 10

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

20 / 30

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

Tags: Bộ đề 10

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

21 / 30

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

Tags: Bộ đề 10

Câu 21: Xét đoạn mã giả sau:
```
function processArray(arr):
n = arr.length
if n == 0:
return 0
if n == 1:
return arr[0]

sum = 0
for x in arr:
sum = sum + x
return sum
```
Độ phức tạp thời gian của hàm `processArray(arr)` là bao nhiêu?

22 / 30

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

Tags: Bộ đề 10

Câu 22: Một thuật toán có độ phức tạp O(log n). Nếu nó mất 0.1 giây cho n = 1024, ước tính thời gian cho n = 4096?

23 / 30

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

Tags: Bộ đề 10

Câu 23: Xét đoạn mã giả sau:
```
function find_pair(arr, target):
n = arr.length
for i from 0 to n-2:
for j from i+1 to n-1:
if arr[i] + arr[j] == target:
return true
return false
```
Độ phức tạp thời gian của hàm `find_pair(arr, target)` là bao nhiêu?

24 / 30

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

Tags: Bộ đề 10

Câu 24: Khi so sánh O(n log n) và O(n^2), thuật toán có độ phức tạp O(n log n) thường được ưa chuộng hơn cho các bài toán sắp xếp trên tập dữ liệu lớn. Điều này là do:

25 / 30

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

Tags: Bộ đề 10

Câu 25: Xét đoạn mã giả sau:
```
function mystery(n):
i = 1
while i < n: print(i) i = i * 2 ``` Độ phức tạp thời gian của hàm `mystery(n)` là bao nhiêu?

26 / 30

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

Tags: Bộ đề 10

Câu 26: Nếu một thuật toán có độ phức tạp O(n), và mất 5 giây để xử lý 100.000 phần tử, thì ước tính thời gian cần thiết để xử lý 500.000 phần tử là bao nhiêu?

27 / 30

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

Tags: Bộ đề 10

Câu 27: Xét đoạn mã giả sau:
```
function anotherFunc(n):
for i from 1 to n:
// Một phép tính O(1) ở đây

for j from 1 to n:
for k from 1 to 10:
// Một phép tính O(1) ở đây
```
Độ phức tạp thời gian của hàm `anotherFunc(n)` là bao nhiêu?

28 / 30

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

Tags: Bộ đề 10

Câu 28: Độ phức tạp thời gian trung bình (average-case) của một thuật toán là gì?

29 / 30

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

Tags: Bộ đề 10

Câu 29: Tại sao thuật toán Tìm kiếm nhị phân (Binary Search) yêu cầu mảng đầu vào phải được sắp xếp?

30 / 30

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

Tags: Bộ đề 10

Câu 30: Xét đoạn mã giả sau:
```
function processNested(n):
count = 0
for i from 1 to n:
for j from 1 to i:
for k from 1 to 5:
count = count + 1
return count
```
Độ phức tạp thời gian của hàm `processNested(n)` là bao nhiêu?

Viết một bình luận