1.Dễ
Ghi nhớ (memoisation) là gì?
- AViết chú thích bên cạnh từng dòng mã
- BLưu kết quả của các lời gọi hàm để các lời gọi lặp lại được trả lời từ bộ nhớ
- CGiải phóng bộ nhớ sau khi một hàm trả về
- DTự động chuyển đệ quy thành vòng lặp tương đương để không cần ngăn xếp lời gọi
2.Dễ
Đệ quy là gì?
- AMột phương pháp sắp xếp
- BMột vòng lặp không bao giờ kết thúc
- CMột hàm gọi chính nó trên các đầu vào nhỏ hơn
- DMột loại cấu trúc dữ liệu
3.Dễ
Độ phức tạp thời gian trong trường hợp tốt nhất của sắp xếp chèn, trên một mảng đã sắp xếp, là gì?
- AO(1)
- BO(n log n)
- CO(n)
- DO(n²)
4.Trung bình
Độ phức tạp thời gian trong trường hợp xấu nhất của quicksort là gì?
- AO(log n)
- BO(n log n)
- CO(n²)
- DO(n)
5.Trung bình
Công thức truy hồi T(n) = 2T(n − 1) + O(1) có nghiệm là gì?
- AO(2ⁿ)
- BO(n²)
- CO(n)
- DO(n log n)
6.Trung bình
Tìm kiếm nhị phân cần khoảng bao nhiêu phép so sánh trong trường hợp xấu nhất trên một mảng đã sắp xếp có 1,000,000 phần tử?
- AKhoảng 20
- BKhoảng 1,000
- CKhoảng 500,000
- DKhoảng 100
7.Khó
Phép nhân Karatsuba thỏa mãn T(n) = 3T(n/2) + O(n). Nghiệm của nó là gì?
- AΘ(n3)
- BΘ(nlog₂ 3), khoảng n1,585
- CΘ(n log n)
- DΘ(n²)
8.Khó
Vì sao thuật toán Dijkstra có thể cho kết quả sai khi một số trọng số cạnh âm?
- ASố âm không thể lưu trong hàng đợi ưu tiên
- BMột đỉnh được chốt khi được lấy ra, nhưng một cạnh âm sau đó vẫn có thể cho nó một đường đi ngắn hơn
- CNó chỉ hoạt động trên đồ thị vô hướng
- DNó rơi vào vòng lặp vô hạn ở mọi cạnh âm
Đáp án
- 1. B · Lưu kết quả của các lời gọi hàm để các lời gọi lặp lại được trả lời từ bộ nhớ
- 2. C · Một hàm gọi chính nó trên các đầu vào nhỏ hơn
- 3. C · O(n)
- 4. C · O(n²)
- 5. A · O(2ⁿ)
- 6. A · Khoảng 20
- 7. B · Θ(nlog₂ 3), khoảng n1,585
- 8. B · Một đỉnh được chốt khi được lấy ra, nhưng một cạnh âm sau đó vẫn có thể cho nó một đường đi ngắn hơn
Lời giải đầy đủ từng bước: hãy luyện chủ đề này trên examproblems.com.