Font size
WorksheetsKiểm tra kiến thức về thuật toán
Total questions: 66
Worksheet time: 56mins
Tính toán độ phức tạp của bài toán là làm gì?
_______ được thực hiện trong mỗi lần thuật toán được khởi chạy dựa trên input đầu vào cua bài toán
Ký hiệu (a) mô tả trường hợp tệ nhất của thuật toán thông qua một hàm của input đầu vào n
Độ phức tạp của thuật toán càng nhỏ thì thuật toán chạy càng (a)
Thông qua ký hiệu Big O ta có thể mô tả độ phức tạp của thuật toán là (a)
Ký hiệu độ phức tạp thuật toán của các toán tử (Operation) và hàm scanf(), printf() là:____
O(1)
O(2)
O(3)
O(4)
Khẳng định "Trong mọi chương trình chỉ có đúng một phép toán tích cực" là đúng hay sai?
Đúng
Sai
Thuật toán tối ưu là gì?
Sử dụng ít thời gian, ít bộ nhớ…
Sử dụng ít thời gian, ít bộ nhớ, ít phép toán…
Sử dụng ít thời gian, nhiều bộ nhớ, ít phép toán…
Sử dụng nhiều thời gian, nhiều bộ nhớ, ít phép toán…
Chương trình nào chạy nhanh hơn?
Chương trình 1
Chương trình 2
Tiêu chí lựa chọn hoặc thiết kế thuật toán là?
Hiệu quả về thời gian
Hiệu quả về không gian
Khả thi khi cài đặt
Tất cả đều đúng
Tiêu chuẩn lựa chọn thuật toán là gì?
Lượng tài nguyên thuật toán đòi hỏi và lượng tài nguyên cho phép
Độ phức tạp của thuật toán
Các tài nguyên như thời gian thực hiện, số lượng ô nhớ…
Cả 3 ý đều đúng
Khi nào thì thời gian chạy chương trình được tính bằng tổng đơn vị thời gian thực hiện của mỗi bước lặp?
Lệnh đơn
Lệnh if
Vòng lặp for hoặc while
Các phép toán đơn giản và phép toán lôgic
Khi nào thì thời gian chạy chương trình được tính bằng đơn vị thời gian lớn nhất của các lệnh nhánh?
Lệnh đơn
Lệnh if
Vòng lặp for hoặc while
Các phép toán đơn giản
Sắp xếp các độ phức tạp của một số hàm chuẩn sau theo thứ tự độ phức tạp tăng dần:
O(n!), O(nlogn), O(logn)
O(n!), O(nlogn), O(logn)
O(logn), O(nlogn), O(n!)
O(logn), O(n!), O(nlogn)
O(n!), O(logn), O(nlogn)
n càng lớn thì (a) sẽ tăng lên nhưng với tốc độ khác nhau
Hãy xác định độ phức tạp thời gian tính toán cho đoạn chương trình
O(n)
O(n+1)
O(n^3)
O(n+3)
1. Một chương trình/thuật toán được coi là hiệu quả nếu độ phức tạp của nó:
A. cao.
B. thấp.
C. cả A và B đều đúng.
D. cả A và B đều sai.
2. Thời gian chạy của thuật toán được kí hiệu là gì?
A. S(n)
B. M(n)
C. T(n)
D. P(n)
3. Phép toán lấy thương nguyên và số dư được tính là mấy đơn vị thời gian?
A. một phần tám đơn vị thời gian.
B. một phần tư đơn vị thời gian.
C. một phần hai đơn vị thời gian.
D. một đơn vị thời gian.
4. Vòng lặp for hoặc while sẽ được tính thời gian bằng:
A. tổng đơn vị thời gian thực hiện của mỗi bước lặp.
B. hiệu đơn vị thời gian thực hiện giữa mỗi bước lặp.
C. tích đơn vị thời gian thực hiện của mỗi bước lặp.
D. cả A, B, C đều sai.
5. Độ phức tạp thời gian có thể coi là một hàm số T(n) với n là:
A. số thực.
B. số hữu tỉ.
C. số nguyên.
D. số tự nhiên.
6. Định nghĩa nào được dùng để so sánh và phân tích bậc của hàm thời gian T(n) khi n tăng lên vô cùng?
A. M-lớn.
B. N-lớn.
C. O-lớn.
D. P-lớn.
7. Nếu thực hiện thuật toán với các độ phức tạp sau đây, trường hợp nào sẽ là bất lợi nhất?
A. O(1)
B. O(logn)
C. O(nlogn)
D. O(n)
8. Tính độ phức tạp của hàm thời gian T(n) = 2n(n – 2) + 4.
A. T(n) = O(n)
B. T(n) = O(n2)
C. T(n) = O(n – 2)
D. T(n) = O(1)
9. Tính độ phức tạp của hàm thời gian T(n) = 3n4 + 2n2logn + 10.
A. T(n) = O(1)
B. T(n) = O(logn)
C. T(n) = O(n2)
D. T(n) = O(n4)
10. Xác định độ phức tạp thời gian tính toán cho chương trình sau:
A. T(n) = O(logn)
B. T(n) = O(n)
C. T(n) = O(n2)
D. T(n) = O(2n)
What is the time complexity of the following code?
for (int i = 1; i < n; i *= 2)
for (int j = 0; j < n; j++)
cout << i << j;
O(n log n)
O(n^2)
O(log n)
O(n)
Which sorting algorithm has the best worst-case time complexity?
Bubble Sort
Quick Sort
Merge Sort
Insertion Sort
Choose the correct Big-O for this recursive function:
void recurse(int n) {
if (n <= 1) return;
recurse(n / 2);
recurse(n / 2);
}
O(n^2)
O(n log n)
O(log n)
O(n)
Time complexity of calculating Fibonacci(n) with naive recursion?
O(n^2)
O(n log n)
O(2^n)
O(n)
Given a graph with V vertices and E edges, what is the time complexity of DFS?
O(V^2)
O(V log V)
O(E log V)
O(V + E)
Giả sử đây có 9 phần tử trong thuật toán Quick Sort, pivot luôn được chọn là phần tử chính giữa. Bao nhiêu lời gọi đệ quy tối đa sẽ diễn ra nếu chia đều dãy mỗi lần?
1
3
4
8
Để cài đặt Stack ta có thể dùng phương pháp nào sau đây:
Chỉ bằng con trỏ.
Chỉ bằng mảng.
Bằng con trỏ và bằng mảng.
Các phương án khác đều sai.
Tư tưởng của giải thuật tìm kiếm tuần tự:
So sánh X lần lượt với các phần tử của dãy cho đến khi gặp phần tử có khóa cần tìm.
Tìm kiếm dựa vào cây nhị phân tìm kiếm.
Tại mỗi bước so sánh X với phần tử ở giữa của dãy...
Lần lượt chia dãy thành hai...
Tư tưởng của giải thuật tìm kiếm nhị phân:
So sánh X lần lượt với từng phần tử...
Lần lượt chia dãy thành hai dãy con dựa vào phần tử khóa...
Tại mỗi bước so sánh X với phần tử giữa, quyết định tìm ở nửa trên hoặc nửa dưới.
Tìm kiếm dựa vào cây nhị tìm kiếm.
Sắp xếp nhanh thuộc loại thuật toán nào?
Sắp xếp trực tiếp (In-place) và đệ quy.
Dùng thêm bộ nhớ ngoài.
Không đệ quy.
Không thể áp dụng cho dữ liệu lớn.
Trường hợp nào khiến sắp xếp nhanh có độ phức tạp xấu nhất?
Dãy đã được sắp tăng (hoặc giảm) và luôn chọn phần tử đầu làm pivot.
Chọn pivot là phần tử giữa.
Dãy chứa các phần tử bằng nhau.
Dãy chỉ có 1 phần tử.
Độ phức tạp trung bình của thuật toán sắp xếp nhanh là:
O(n)
O(nlogn)
O(n^2)
O(logn)
Cơ chế nào dưới đây được cài đặt cho Stack:
LIFO
Tuần tự
Round Robin
FIFO
Một cây nhị phân được gọi là đúng nếu:
Node gốc và các node trung gian đều có 2 node con.
Giá trị khóa của node gốc bao giờ cũng lớn hơn giá trị các khóa của nhánh cây con bên phải.
Giá trị khóa của node gốc bao giờ cũng lớn hơn giá trị các khóa của nhánh cây con bên trái
Node gốc và các node trung gian đều có 2 node con và các node lá có mức bằng nhau.
Trong các cấu trúc dữ liệu sau, đâu là dữ liệu trừu tượng:
Cấu trúc dữ liệu dạng cây (TREE).
Cấu trúc dữ liệu dạng danh sách (LIST).
Tất cả cấu trúc đã nêu.
Cấu trúc dữ liệu kiểu hàng đợi (QUEUE).
Định nghĩa cấu trúc dữ liệu hàng đợi (QUEUE):
Thêm và loại bỏ đều ở cùng một đầu.
Thêm và loại bỏ ở đầu hoặc cuối.
Thêm ở cuối (Rear), loại bỏ ở đầu (Front).
Thêm ở đầu (Front), loại bỏ ở cuối (Rear).
Định nghĩa cấu trúc dữ liệu Stack:
Stack là danh sách kết nối.
Stack là danh sách đặc biệt, thêm ở một đầu, loại bỏ ở đầu kia.
Stack là danh sách đặc biệt, thêm và loại bỏ ở cùng một đầu gọi là đỉnh (Top).
Stack là cấu trúc dữ liệu cài đặt bằng con trỏ.
Khi chèn phần tử vào danh sách, nếu độ dài danh sách bằng độ dài mảng thì thông báo:
Danh sách rỗng.
Danh sách không tồn tại.
Danh sách chưa khai báo.
Danh sách đầy.
Giá trị nào thường được chọn làm pivot trong Quick Sort đơn giản:
Giá trị lớn nhất.
Giá trị nhỏ nhất.
Giá trị trung bình.
Một phần tử bất kỳ (thường đầu, cuối hoặc giữa).
Định nghĩa cấu trúc dữ liệu dạng Danh sách (LIST)
Danh sách là kiểu con trỏ.
Danh sách là tập hợp các phần tử khác kiểu.
Danh sách là kiểu dữ liệu mảng.
Danh sách là một tập hợp các phần tử có cùng kiểu (ElementType).
Độ phức tạp tốt nhất của thuật toán sắp xếp nổi bọt là:
O(log n)
O(n)
O(n log n)
O(n^2)
Trong thuật toán tìm kiếm nhị phân, điều kiện nào là cần thiết để áp dụng?
Dãy phải là dãy số nguyên.
Dãy phải được sắp xếp.
Dãy có ít nhất 2 phần tử.
Dãy không chứa phần tử trùng lặp.
Độ phức tạp thời gian của thuật toán sắp xếp trộn là:
O(n log n)
O(log n)
O(n^2)
O(n)
1. Một chương trình/thuật toán được coi là hiệu quả nếu độ phức tạp của nó:
A. cao.
B. thấp.
C. cả A và B đều đúng.
D. cả A và B đều sai.
2. Thời gian chạy của thuật toán được kí hiệu là gì?
A. S(n)
B. M(n)
C. T(n)
D. P(n)
3. Phép toán lấy thương nguyên và số dư được tính là mấy đơn vị thời gian?
A. một phần tám đơn vị thời gian.
B. một phần tư đơn vị thời gian.
C. một phần hai đơn vị thời gian.
D. một đơn vị thời gian.
4. Vòng lặp for hoặc while sẽ được tính thời gian bằng:
A. tổng đơn vị thời gian thực hiện của mỗi bước lặp.
B. hiệu đơn vị thời gian thực hiện giữa mỗi bước lặp.
C. tích đơn vị thời gian thực hiện của mỗi bước lặp.
D. cả A, B, C đều sai.
5. Độ phức tạp thời gian có thể coi là một hàm số T(n) với n là:
A. số thực.
B. số hữu tỉ.
C. số nguyên.
D. số tự nhiên.
6. Định nghĩa nào được dùng để so sánh và phân tích bậc của hàm thời gian T(n) khi n tăng lên vô cùng?
A. M-lớn.
B. N-lớn.
C. O-lớn.
D. P-lớn.
7. Nếu thực hiện thuật toán với các độ phức tạp sau đây, trường hợp nào sẽ là bất lợi nhất?
A. O(1)
B. O(logn)
C. O(nlogn)
D. O(n)
8. Tính độ phức tạp của hàm thời gian T(n) = 2n(n – 2) + 4.
A. T(n) = O(n)
B. T(n) = O(n2)
C. T(n) = O(n – 2)
D. T(n) = O(1)
9. Tính độ phức tạp của hàm thời gian T(n) = 3n4 + 2n2logn + 10.
A. T(n) = O(1)
B. T(n) = O(logn)
C. T(n) = O(n2)
D. T(n) = O(n4)
10. Xác định độ phức tạp thời gian tính toán cho chương trình sau:
A. T(n) = O(logn)
B. T(n) = O(n)
C. T(n) = O(n2)
D. T(n) = O(2n)
