1.Dễ
Ghi nhớ (memoisation) là gì?
- AViết chú thích bên cạnh từng dòng mã
- BGiải phóng bộ nhớ sau khi một hàm trả về
- CLư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ớ
- 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ễ
Một thuật toán O(n²) mất 1 giây khi n = 1000. Khoảng bao lâu khi n = 2000?
- A2 giây
- B8 giây
- C4 giây
- D1 giây
3.Dễ
Sắp xếp chọn hoạt động như thế nào?
- ANó chia mảng làm đôi rồi trộn lại
- BNó liên tục hoán đổi các phần tử kề nhau đang sai thứ tự
- CNó liên tục tìm phần tử nhỏ nhất của phần chưa sắp xếp và hoán đổi nó lên đầu
- DNó chèn từng phần tử vào phần đã sắp xếp đang lớn dần bằng cách dịch chuyển
4.Trung bình
Một hàm giai thừa đệ quy đơn giản fact(n) = n × fact(n − 1) dùng bao nhiêu không gian ngăn xếp?
- AO(1)
- BO(log n)
- CO(n)
- DO(n²)
5.Trung bình
Đệ quy của sắp xếp trộn có bao nhiêu tầng đối với một mảng n phần tử?
- AKhoảng n
- BKhoảng √n
- CKhoảng n / 2
- DKhoảng log₂ n
6.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(n²)
- BO(n log n)
- CO(n)
- DO(log n)
7.Khó
Thuật toán nào tìm cây khung nhỏ nhất bằng cách liên tục thêm cạnh rẻ nhất không tạo chu trình?
- AThuật toán Prim bắt đầu từ một nút
- BFloyd–Warshall
- CThuật toán Kruskal
- DThuật toán Dijkstra
8.Khó
Độ phức tạp thời gian của: for i = 1 to n: for (j = i; j ≤ n; j = j + i) thực hiện công việc O(1) là gì?
- AO(n)
- BO(n √n)
- CO(n²)
- DO(n log n)
Đáp án
- 1. C · 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 · 4 giây
- 3. C · Nó liên tục tìm phần tử nhỏ nhất của phần chưa sắp xếp và hoán đổi nó lên đầu
- 4. C · O(n)
- 5. D · Khoảng log₂ n
- 6. A · O(n²)
- 7. C · Thuật toán Kruskal
- 8. D · O(n log n)
Lời giải đầy đủ từng bước: hãy luyện chủ đề này trên examproblems.com.