JavaScript is required

Hãy cho biết độ phức tạp của thuật toán Insertion sort (chèn trực tiếp) theo định nghĩa Big-O (O lớn).

b. Viết hàm sắp xếp mảng 1 chiều gồm N phần tử giảm dần với thuật toán Insertion sort.

c. Hãy cho biết dãy số sẽ thay đổi qua từng bước như thế nào khi áp dụng thuật toán ở câu 1b, biết rằng dãy số cho như sau: 3, 8, 4, 5, 9, 1, 2, 6.

Trả lời:

Đáp án đúng:


Thuật toán Sắp xếp chèn (Insertion Sort) có độ phức tạp thời gian là O(n^2) trong trường hợp xấu nhất và trung bình, do trong mỗi lần chèn một phần tử, ta có thể phải duyệt qua tất cả các phần tử đã được sắp xếp trước đó để tìm vị trí thích hợp. Trong trường hợp tốt nhất (mảng đã sắp xếp), độ phức tạp là O(n). Để sắp xếp mảng giảm dần, ta cần thay đổi điều kiện so sánh trong vòng lặp `while` từ `key < arr[j]` sang `key > arr[j]` (trong trường hợp tăng dần) để đảm bảo các phần tử lớn hơn được dịch sang phải, tạo không gian cho phần tử hiện tại được chèn vào đúng vị trí để có thứ tự giảm dần. Minh họa từng bước với dãy `3, 8, 4, 5, 9, 1, 2, 6` cho việc sắp xếp giảm dần như sau: 1. **Khởi tạo:** Mảng con đã sắp xếp `[3]`. Phần tử đang xét: `8`. * `8 > 3`. Chèn `8` vào sau `3`. Mảng con: `[8, 3]`. 2. **Phần tử đang xét:** `4`. * `4 < 8`. `4 > 3`. Chèn `4` vào giữa `8` và `3`. Mảng con: `[8, 4, 3]`. 3. **Phần tử đang xét:** `5`. * `5 < 8`. `5 > 4`. Chèn `5` vào giữa `8` và `4`. Mảng con: `[8, 5, 4, 3]`. 4. **Phần tử đang xét:** `9`. * `9 > 8`. Chèn `9` vào đầu. Mảng con: `[9, 8, 5, 4, 3]`. 5. **Phần tử đang xét:** `1`. * `1 < 9`, `1 < 8`, `1 < 5`, `1 < 4`, `1 < 3`. Chèn `1` vào giữa `3` và `2`. Mảng con: `[9, 8, 5, 4, 3, 1]`. 6. **Phần tử đang xét:** `2`. * `2 < 9`, `2 < 8`, `2 < 5`, `2 < 4`, `2 < 3`. `2 > 1`. Chèn `2` vào giữa `3` và `1`. Mảng con: `[9, 8, 5, 4, 3, 2, 1]`. 7. **Phần tử đang xét:** `6`. * `6 < 9`, `6 < 8`. `6 > 5`. Chèn `6` vào giữa `8` và `5`. Mảng con: `[9, 8, 6, 5, 4, 3, 2, 1]`. Kết quả cuối cùng là mảng được sắp xếp giảm dần: `[9, 8, 6, 5, 4, 3, 2, 1]`.

Đề thi cuối kỳ môn Cấu trúc dữ liệu và giải thuật của Trường Đại học Công nghệ Thông tin, Học kỳ 2, năm học 2021-2022. Nội dung bao gồm các câu hỏi về thuật toán Insertion Sort, cây nhị phân tìm kiếm, cây B-Tree, kỹ thuật băm và biểu diễn đồ thị cho bài toán đường đi ngắn nhất.


5 câu hỏi 90 phút

Câu hỏi liên quan