Haylamdo biên soạn và sưu tầm với 15 câu hỏi trắc nghiệm Tin học 11 Bài 25: Thực hành xác định độ phức tạp thời gian thuật toán có đáp án chi tiết đầy đủ các mức độ sách Kết nối tri thức sẽ giúp học sinh lớp 11 ôn luyện trắc nghiệm Tin 11 Khoa học máy tính.
Trắc nghiệm Tin học 11 Bài 25: Thực hành xác định độ phức tạp thời gian thuật toán - Kết nối tri thức
PHẦN I.Câu trắc nghiệm nhiều phương án lựa chọn. Thí sinh trả lời từ câu 1 đến câu 10. Mỗi câu hỏi thí sinh chỉ lựa chọn một phương án.
Câu 1: Độ phức tạp thời gian của thuật toán tìm kiếm tuần tự LinearSearch(A, K) là:
A. O(1)
B. O(n)
C. O(log n)
D. O(n^2)
Đáp án: B
Giải thích: Trong trường hợp xấu nhất, thuật toán tìm kiếm tuần tự phải duyệt qua toàn bộ mảng để tìm phần tử, do đó độ phức tạp là O(n).
Câu 2: Độ phức tạp thời gian của thuật toán sắp xếp chọn SelectionSort(A) là:
A. O(n)
B. O(log n)
C. O(n^2)
D. O(n log n)
Đáp án: C
Giải thích: Thuật toán sắp xếp chọn có độ phức tạp thời gian là O(n^2) do cần thực hiện các vòng lặp lồng nhau để tìm phần tử nhỏ nhất và đổi chỗ ở mỗi lần duyệt.
Câu 3: Độ phức tạp thời gian của thuật toán sắp xếp nổi bọt BubbleSort(A) là:
A. O(n)
B. O(n^2)
C. O(n log n)
D. O(log n)
Đáp án: B
Giải thích: Trong trường hợp xấu nhất, thuật toán sắp xếp nổi bọt sẽ có độ phức tạp O(n^2) vì có hai vòng lặp lồng nhau chạy qua các phần tử.
Câu 4: Đối với thuật toán LinearSearch(A, K), thời gian tính toán trong trường hợp tốt nhất là:
A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)
Đáp án: C
Giải thích: Trong trường hợp tốt nhất, phần tử cần tìm có thể nằm ngay ở vị trí đầu tiên của mảng, và thuật toán chỉ cần thực hiện một lần so sánh để trả về kết quả, do đó độ phức tạp là O(1).
Câu 5: Độ phức tạp thời gian của hàm Mystery(n) với các vòng lặp lồng nhau từ i đến j và j đến k là:
A. O(n)
B. O(n^2)
C. O(n^3)
D. O(log n)
Đáp án: C
Giải thích: Hàm Mystery(n) có ba vòng lặp lồng nhau, do đó độ phức tạp thời gian của nó là O(n^3).
Câu 6: Nếu thời gian thực hiện thuật toán sắp xếp chọn là 1 giây, giá trị lớn nhất của n sẽ là:
A. 1000
B. 100
C. 10000
D. 316
Đáp án: D
Giải thích: Với độ phức tạp O(n^2) và 1 giây thực thi, n phải khoảng √(1 giây / thời gian đơn vị), do đó n gần 316.
Câu 7: Hàm func(A) với hai vòng lặp lồng nhau chạy từ 0 đến n-1, thực hiện một phép so sánh mỗi lần duyệt, có độ phức tạp là:
A. O(n)
B. O(n log n)
C. O(n^2)
D. O(log n)
Đáp án: C
Giải thích: Với hai vòng lặp lồng nhau mỗi lần duyệt toàn bộ phần tử, hàm có độ phức tạp O(n^2).
Câu 8: Trong các thuật toán tìm kiếm tuần tự, thời gian thực hiện tối đa sẽ là bao nhiêu đối với mảng kích thước n?
A. O(n)
B. O(log n)
C. O(n^2)
D. O(1)
Đáp án: A
Giải thích: Trong trường hợp xấu nhất, thuật toán tìm kiếm tuần tự cần duyệt qua toàn bộ mảng, do đó độ phức tạp là O(n).
Câu 9: Khi SelectionSort(A) thực hiện một phép đổi chỗ tại dòng cuối, phép tính này sẽ tốn:
A. 1 đơn vị thời gian
B. 2 đơn vị thời gian
C. 3 đơn vị thời gian
D. 4 đơn vị thời gian
Đáp án: C
Giải thích: Phép đổi chỗ trong SelectionSort(A) được phân tích tốn 3 đơn vị thời gian.
Câu 10: Độ phức tạp thời gian của BubbleSort trong trường hợp tốt nhất khi mảng đã sắp xếp là:
A. O(n)
B. O(n^2)
C. O(n log n)
D. O(1)
Đáp án: A
Giải thích: Trong trường hợp tốt nhất, BubbleSort sẽ chỉ cần duyệt qua một lần mảng và kiểm tra rằng tất cả các phần tử đã sắp xếp đúng, do đó độ phức tạp là O(n).
PHẦN II. Câu trắc nghiệm đúng sai.Thí sinh trả lời từ câu 1 đến câu 2. Trong mỗi ý a), b), c), d) ở mỗi câu, thí sinh chọn đúng hoặc sai
Câu 1: Độ phức tạp thời gian của thuật toán tìm kiếm tuần tự LinearSearch(A, K) là gì?
a) O(1)
b) O(logn)
c) O(n)O(n)O(n)
d) O(n2)O(n^2)O(n2)
a) Sai. O(1)O(1)O(1) là độ phức tạp hằng số, chỉ xảy ra khi thuật toán không phụ thuộc vào kích thước của mảng, trong khi ở đây thời gian chạy phụ thuộc vào số phần tử của mảng.
b) Sai. O(logn)O(\log n)O(logn) là độ phức tạp của thuật toán tìm kiếm nhị phân, yêu cầu mảng phải được sắp xếp trước. Thuật toán tìm kiếm tuần tự không yêu cầu mảng phải sắp xếp, do đó không có độ phức tạp O(logn)O(\log n)O(logn).
c) Đúng. Với kích thước mảng nnn, trong trường hợp xấu nhất, thuật toán cần duyệt qua toàn bộ mảng (khoảng nnn lần) trước khi tìm thấy phần tử hoặc xác nhận rằng phần tử không có trong mảng. Vì vậy, độ phức tạp thời gian của thuật toán này là O(n)O(n)O(n).
d) Sai. O(n2)O(n^2)O(n2) thường là độ phức tạp của thuật toán với hai vòng lặp lồng nhau, nhưng thuật toán này chỉ có một vòng lặp.
Câu 2: Độ phức tạp thời gian của thuật toán sắp xếp chọn SelectionSort(A) là gì?
a) O(1)O(1)O(1)
b) O(n)O(n)O(n)
c) O(nlogn)
d) O(n2)O(n^2)O(n2)
a) Sai. O(1)O(1)O(1) là độ phức tạp hằng số, không phù hợp cho thuật toán sắp xếp do thời gian chạy phụ thuộc vào số lượng phần tử trong mảng.
b) Sai. O(n)O(n)O(n) là độ phức tạp của thuật toán sắp xếp có tính tuyến tính, không phải là sắp xếp chọn vì thuật toán này có hai vòng lặp lồng nhau.
c) Sai. O(nlogn)O(n \log n)O(nlogn) là độ phức tạp thời gian của các thuật toán sắp xếp hiệu quả hơn như sắp xếp nhanh (Quick Sort) hoặc sắp xếp trộn (Merge Sort). Tuy nhiên, Selection Sort có độ phức tạp cao hơn do hai vòng lặp lồng nhau.
d) Đúng. Trong Selection Sort, với mỗi lần lặp ngoài, một phần tử nhỏ nhất từ các phần tử còn lại trong mảng sẽ được tìm thấy và đưa vào vị trí thích hợp. Quá trình tìm kiếm phần tử nhỏ nhất tốn O(n)O(n)O(n), và thực hiện nnn lần nên tổng thời gian là O(n2)O(n^2)O(n2).
PHẦN III. Câu trả lời ngắn. Thí sinh trả lời từ câu 1 đến câu 3
Câu 1: Độ phức tạp thời gian của thuật toán tìm kiếm tuần tự LinearSearch là gì và tại sao?
Đáp án: O(n)
Giải thích: Thuật toán tìm kiếm tuần tự LinearSearch duyệt qua toàn bộ mảng để tìm kiếm phần tử cần tìm. Trong trường hợp xấu nhất (khi phần tử không tồn tại trong mảng), thuật toán phải thực hiện n phép so sánh, với n là kích thước của mảng. Vì vậy, độ phức tạp thời gian của thuật toán là O(n), nghĩa là tuyến tính theo kích thước của mảng.
Câu 2: Độ phức tạp thời gian của thuật toán sắp xếp chọn SelectionSort là gì và tại sao?
Đáp án: O(n²)
Giải thích: Thuật toán sắp xếp chọn SelectionSort hoạt động bằng cách tìm phần tử nhỏ nhất trong phần mảng chưa được sắp xếp và hoán đổi nó vào vị trí đúng trong mảng đã sắp xếp. Trong mỗi lần lặp, thuật toán cần duyệt qua phần còn lại của mảng để tìm phần tử nhỏ nhất, dẫn đến số phép tính tăng lên theo bình phương của n. Vì vậy, độ phức tạp thời gian của thuật toán là O(n²), đặc biệt khi kích thước mảng lớn.
Câu 3: Giả sử mỗi phép tính tốn một micro giây, giá trị lớn nhất của n mà thuật toán tìm kiếm tuần tự có thể thực hiện trong một giây là bao nhiêu?
Đáp án: 1.000.000
Giải thích: Vì mỗi phép tính tốn một micro giây và có 1.000.000 micro giây trong một giây, thuật toán LinearSearch có thể thực hiện tối đa cho n = 1.000.000 phần tử trong một giây. Điều này dựa trên độ phức tạp O(n), nghĩa là thuật toán cần thực hiện n phép tính, tương đương với số phần tử trong mảng.
Xem thêm câu hỏi trắc nghiệm Tin học lớp 11 Kết nối tri thức có đáp án hay khác: