Bộ 5 - Trắc nghiệm Cấu trúc dữ liệu và giải thuật có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:Trong phân tích thuật toán, độ phức tạp thời gian của thuật toán sắp xếp trộn (Merge Sort) trong trường hợp xấu nhất là bao nhiêu?
💡 Lời giải chi tiết:
Theo phân tích phổ biến về thuật toán chia để trị, Merge Sort luôn chia đôi mảng và thực hiện việc trộn với chi phí tuyến tính ở mỗi tầng của cây đệ quy có độ cao log n, dẫn đến độ phức tạp O(n log n) trong mọi trường hợp. Kết luận Lý giải: O(n log n)
Câu 2:Cấu trúc dữ liệu nào tuân theo nguyên lý 'Vào sau, Ra trước' (Last In, First Out - LIFO)?
💡 Lời giải chi tiết:
Theo định nghĩa về các kiểu dữ liệu trừu tượng, ngăn xếp là cấu trúc mà phần tử cuối cùng được thêm vào sẽ là phần tử đầu tiên được lấy ra. Kết luận Lý giải: Ngăn xếp (Stack)
Câu 3:Trong một cây tìm kiếm nhị phân (BST), phép duyệt nào sẽ cho kết quả là một dãy các giá trị tăng dần?
💡 Lời giải chi tiết:
Theo tính chất của cây tìm kiếm nhị phân, việc duyệt theo thứ tự 'trái - gốc - phải' đảm bảo các giá trị được truy xuất theo thứ tự không giảm. Kết luận Lý giải: Duyệt trung thứ tự (In-order traversal)
Câu 4:Thuật toán Dijkstra dùng để tìm đường đi ngắn nhất từ một đỉnh nguồn đến các đỉnh khác không áp dụng được cho loại đồ thị nào?
💡 Lời giải chi tiết:
Theo nguyên lý tham lam của Dijkstra, thuật toán giả định rằng việc thêm một cạnh sẽ không làm giảm tổng trọng số đường đi, do đó nó không đảm bảo tính chính xác trên đồ thị có trọng số âm. Kết luận Lý giải: Đồ thị có cạnh mang trọng số âm
Câu 5:Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong bảng băm (Hash Table) sử dụng hàm băm tốt là bao nhiêu?
💡 Lời giải chi tiết:
Theo lý thuyết về cấu trúc dữ liệu, nhờ vào việc truy cập trực tiếp qua chỉ số được tính toán từ hàm băm, thời gian tìm kiếm trung bình được coi là hằng số. Kết luận Lý giải: O(1)
Câu 6:Trong thuật toán sắp xếp nhanh (QuickSort), trường hợp xấu nhất O(n^2) xảy ra khi nào?
💡 Lời giải chi tiết:
Theo phân tích thuật toán, khi phần tử chốt luôn là phần tử lớn nhất hoặc nhỏ nhất, việc phân hoạch sẽ bị lệch tối đa khiến số lần đệ quy tăng lên n lần thay vì log n. Kết luận Lý giải: Mảng đầu vào đã được sắp xếp hoặc sắp xếp ngược và chọn chốt là phần tử đầu hoặc cuối
Câu 7:Cấu trúc dữ liệu nào là phù hợp nhất để triển khai chức năng 'Undo' (Hoàn tác) trong các phần mềm soạn thảo văn bản?
💡 Lời giải chi tiết:
Theo logic ứng dụng, thao tác cần hoàn tác gần nhất chính là thao tác cuối cùng được thực hiện, phù hợp với cơ chế LIFO của ngăn xếp. Kết luận Lý giải: Ngăn xếp (Stack)
Câu 8:Một cây nhị phân đầy đủ (Full Binary Tree) có độ cao h thì số lượng nút tối đa là bao nhiêu?
💡 Lời giải chi tiết:
Theo công thức toán học cho cây nhị phân, tổng số nút tối đa ở độ cao h (gốc ở mức 0) được tính bằng tổng cấp số nhân từ 2^0 đến 2^h. Kết luận Lý giải: 2^(h+1) - 1
Câu 9:Ưu điểm chính của danh sách liên kết (Linked List) so với mảng (Array) là gì?
💡 Lời giải chi tiết:
Theo phân tích cấu trúc, danh sách liên kết không yêu cầu các ô nhớ liên tiếp nên việc thêm hoặc xóa nút chỉ cần thay đổi liên kết mà không cần di chuyển toàn bộ phần tử như mảng. Kết luận Lý giải: Dễ dàng thay đổi kích thước và chèn/xóa phần tử linh hoạt
Câu 10:Thuật toán nào sau đây thuộc nhóm thuật toán tham lam (Greedy Algorithm)?
💡 Lời giải chi tiết:
Theo lý thuyết thiết kế giải thuật, thuật toán Prim luôn chọn cạnh có trọng số nhỏ nhất kết nối với tập đỉnh hiện tại ở mỗi bước để đạt được tối ưu toàn cục. Kết luận Lý giải: Thuật toán Prim tìm cây khung nhỏ nhất
Câu 11:Để biểu diễn một đồ thị thưa (ít cạnh) trong máy tính, cách nào thường được ưu tiên để tiết kiệm bộ nhớ?
💡 Lời giải chi tiết:
Theo phân tích không gian, danh sách kề chỉ lưu trữ các cạnh thực sự tồn tại, tránh lãng phí bộ nhớ cho các giá trị không (0) như trong ma trận kề khi đồ thị có ít cạnh. Kết luận Lý giải: Danh sách kề (Adjacency List)
Câu 12:Độ phức tạp thời gian của thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp là gì?
💡 Lời giải chi tiết:
Theo nguyên lý chia để trị, mỗi bước của tìm kiếm nhị phân loại bỏ một nửa số lượng phần tử cần xem xét, dẫn đến số bước thực hiện tỷ lệ thuận với log cơ số 2 của n. Kết luận Lý giải: O(log n)
Câu 13:Thuật toán sắp xếp nào có độ phức tạp thời gian O(n^2) trong mọi trường hợp (tốt nhất, trung bình, xấu nhất)?
💡 Lời giải chi tiết:
Theo logic của thuật toán Selection Sort, nó luôn quét toàn bộ phần còn lại của mảng để tìm phần tử nhỏ nhất bất kể mảng ban đầu có trạng thái như thế nào. Kết luận Lý giải: Sắp xếp chọn (Selection Sort)
Câu 14:Trong cấu trúc dữ liệu Hàng đợi (Queue), thao tác lấy một phần tử ra khỏi hàng đợi được gọi là gì?
💡 Lời giải chi tiết:
Theo quy ước thuật ngữ trong cấu trúc dữ liệu, Enqueue là thêm vào và Dequeue là lấy ra khỏi hàng đợi. Kết luận Lý giải: Dequeue
Câu 15:Điều kiện cần thiết để thực hiện thuật toán Tìm kiếm nhị phân trên một mảng là gì?
💡 Lời giải chi tiết:
Theo nguyên lý hoạt động, tìm kiếm nhị phân dựa vào việc so sánh giá trị cần tìm với phần tử giữa để thu hẹp phạm vi, điều này chỉ khả thi nếu dữ liệu đã được sắp xếp. Kết luận Lý giải: Mảng phải được sắp xếp theo một thứ tự xác định
Câu 16:Thuật toán nào sau đây được sử dụng để tìm cây khung nhỏ nhất (MST) của một đồ thị vô hướng liên thông?
💡 Lời giải chi tiết:
Theo lý thuyết đồ thị, Kruskal là thuật toán phổ biến sử dụng phương pháp tham lam dựa trên việc sắp xếp các cạnh để xây dựng cây khung có tổng trọng số nhỏ nhất. Kết luận Lý giải: Thuật toán Kruskal
Câu 17:Cấu trúc dữ liệu Heap (đặc biệt là Max-Heap) thường được ứng dụng để triển khai cái gì hiệu quả nhất?
💡 Lời giải chi tiết:
Theo thiết kế, cấu trúc Heap cho phép lấy ra phần tử lớn nhất (hoặc nhỏ nhất) và cập nhật lại cây với độ phức tạp log n, rất phù hợp cho hàng đợi ưu tiên. Kết luận Lý giải: Hàng đợi ưu tiên (Priority Queue)
Câu 18:Trong cây AVL, sự chênh lệch về chiều cao giữa cây con trái và cây con phải của bất kỳ nút nào không được vượt quá bao nhiêu?
💡 Lời giải chi tiết:
Theo định nghĩa về cây tự cân bằng AVL, hệ số cân bằng của mỗi nút chỉ được phép nhận các giá trị -1, 0, hoặc 1 để đảm bảo độ cao của cây luôn ở mức log n. Kết luận Lý giải: 1
Câu 19:Thuật toán sắp xếp nào có tính ổn định (Stable Sort)?
💡 Lời giải chi tiết:
Theo định nghĩa về tính ổn định, Insertion Sort giữ nguyên thứ tự tương đối của các phần tử có giá trị bằng nhau vì nó chỉ di chuyển phần tử khi thực sự nhỏ hơn. Kết luận Lý giải: Sắp xếp chèn (Insertion Sort)
Câu 20:Độ phức tạp thời gian của phép duyệt đồ thị theo chiều rộng (BFS) sử dụng danh sách kề là bao nhiêu (với V là số đỉnh, E là số cạnh)?
💡 Lời giải chi tiết:
Theo phân tích thuật toán, BFS thăm mỗi đỉnh một lần và duyệt qua mỗi cạnh một lần (hoặc hai lần đối với đồ thị vô hướng), dẫn đến độ phức tạp tuyến tính O(V + E). Kết luận Lý giải: O(V + E)
Câu 21:Một đồ thị có hướng không có chu trình (DAG) là điều kiện bắt buộc để thực hiện thuật toán nào?
💡 Lời giải chi tiết:
Theo định nghĩa, sắp xếp topo chỉ tồn tại nếu đồ thị không có chu trình có hướng vì chu trình sẽ tạo ra sự mâu thuẫn về thứ tự ưu tiên giữa các đỉnh. Kết luận Lý giải: Sắp xếp topo (Topological Sort)
Câu 22:Trong kỹ thuật giải quyết xung đột bằng phương pháp thăm dò tuyến tính (Linear Probing) của bảng băm, nếu vị trí được băm đã bị chiếm, thuật toán sẽ làm gì?
💡 Lời giải chi tiết:
Theo cơ chế của Linear Probing, khi xảy ra xung đột, thuật toán sẽ tìm kiếm vị trí trống tiếp theo theo công thức (hash(x) + i) mod size. Kết luận Lý giải: Kiểm tra tuần tự các vị trí kế tiếp cho đến khi tìm thấy ô trống
Câu 23:Thuật toán sắp xếp nào dựa trên việc đếm số lần xuất hiện của các giá trị và yêu cầu miền giá trị của các phần tử không quá lớn?
💡 Lời giải chi tiết:
Theo nguyên lý của Counting Sort, nó sử dụng một mảng phụ để đếm tần suất các giá trị, đạt độ phức tạp O(n + k) nhưng đòi hỏi k (phạm vi giá trị) không được quá lớn. Kết luận Lý giải: Sắp xếp đếm (Counting Sort)
Câu 24:Phép toán nào sau đây trên ngăn xếp (Stack) trả về giá trị của phần tử trên cùng mà không xóa nó khỏi ngăn xếp?
💡 Lời giải chi tiết:
Theo quy ước ADT, phép toán Peek cho phép xem giá trị tại đỉnh ngăn xếp mà không làm thay đổi cấu trúc dữ liệu hiện tại. Kết luận Lý giải: Peek (hoặc Top)
Câu 25:Kỹ thuật đệ quy có ghi nhớ (Memoization) thường được sử dụng trong phương pháp thiết kế thuật toán nào để tránh tính toán lại các bài toán con?
💡 Lời giải chi tiết:
Theo phương pháp quy hoạch động, Memoization lưu trữ kết quả của các bài toán con đã giải để sử dụng lại, giúp giảm đáng kể độ phức tạp thời gian. Kết luận Lý giải: Quy hoạch động (Dynamic Programming)