JavaScript is required

Cho mảng gồm có các giá trị sau: 17, 72, 99, 32, 58, 70, 44, 12, 23, 32

Hãy trình bày chi tiết các bước sắp xếp mảng trên tăng dần bằng giải thuật shell sort.

Trả lời:

Đáp án đúng:


Câu hỏi yêu cầu trình bày chi tiết các bước sắp xếp mảng số nguyên tăng dần bằng thuật toán Shell Sort. Mảng cho trước là: [17, 72, 99, 32, 58, 70, 44, 12, 23, 32]. Shell Sort là một cải tiến của Insertion Sort. Nó hoạt động bằng cách sắp xếp các cặp phần tử cách nhau một khoảng (gọi là gap) nhất định, sau đó giảm dần khoảng cách này cho đến khi khoảng cách bằng 1. Khi khoảng cách bằng 1, thuật toán trở thành Insertion Sort thông thường, nhưng lúc này mảng đã gần như được sắp xếp, do đó việc hoàn thành sắp xếp sẽ rất nhanh. Các bước thực hiện với mảng [17, 72, 99, 32, 58, 70, 44, 12, 23, 32]: 1. **Chọn các khoảng (gaps):** Một chuỗi các khoảng phổ biến là n/2, n/4, n/8, ..., 1. Với n=10, ta có thể dùng chuỗi khoảng: 5, 2, 1. 2. **Sắp xếp với gap = 5:** * So sánh và hoán vị các cặp (index i, index i+5). * Cặp 1: (0, 5) -> (17, 70). 17 < 70, không đổi. * Cặp 2: (1, 6) -> (72, 44). 72 > 44, hoán vị. Mảng: [17, 44, 99, 32, 58, 70, 72, 12, 23, 32] * Cặp 3: (2, 7) -> (99, 12). 99 > 12, hoán vị. Mảng: [17, 44, 12, 32, 58, 70, 72, 99, 23, 32] * Cặp 4: (3, 8) -> (32, 23). 32 > 23, hoán vị. Mảng: [17, 44, 12, 23, 58, 70, 72, 99, 32, 32] * Cặp 5: (4, 9) -> (58, 32). 58 > 32, hoán vị. Mảng: [17, 44, 12, 23, 32, 70, 72, 99, 32, 58] * Sau bước gap = 5: [17, 44, 12, 23, 32, 70, 72, 99, 32, 58] 3. **Sắp xếp với gap = 2:** * Thực hiện sắp xếp Insertion Sort cho các mảng con cách nhau 2 phần tử. * Mảng con 1 (chỉ số lẻ): [44, 23, 70, 99, 58] * [44, 23] -> [23, 44] * [44, 70] -> [44, 70] * [70, 99] -> [70, 99] * [99, 58] -> [58, 99] * Mảng con 1 sau sắp xếp: [23, 44, 70, 58, 99] * Mảng con 2 (chỉ số chẵn): [17, 12, 32, 72, 32] * [17, 12] -> [12, 17] * [17, 32] -> [17, 32] * [32, 72] -> [32, 72] * [72, 32] -> [32, 72] * Mảng con 2 sau sắp xếp: [12, 17, 32, 32, 72] * Ghép lại mảng: [12, 23, 17, 44, 32, 70, 32, 99, 72, 58] * Sau bước gap = 2: [12, 23, 17, 44, 32, 70, 32, 99, 72, 58] 4. **Sắp xếp với gap = 1:** * Đây là Insertion Sort trên mảng gần như đã sắp xếp: [12, 23, 17, 44, 32, 70, 32, 99, 72, 58] * [12] * [12, 23] * [17, 23, 12] -> [12, 17, 23] * [12, 17, 23, 44] * [32, 44, 23, 17, 12] -> [12, 17, 23, 32, 44] * [12, 17, 23, 32, 44, 70] * [32, 70, 44, 32, 23, 17, 12] -> [12, 17, 23, 32, 32, 44, 70] * [12, 17, 23, 32, 32, 44, 70, 99] * [72, 99, 70, 44, 32, 32, 23, 17, 12] -> [12, 17, 23, 32, 32, 44, 70, 72, 99] * [58, 72, 99, 70, 44, 32, 32, 23, 17, 12] -> [12, 17, 23, 32, 32, 44, 58, 70, 72, 99] * Sau bước gap = 1: [12, 17, 23, 32, 32, 44, 58, 70, 72, 99] Vì câu hỏi chỉ yêu cầu trình bày các bước thực hiện và không có đáp án trắc nghiệm đi kèm để đánh giá tính đúng sai, nên trường `answer_iscorrect` được đặt là "null" để thể hiện sự không áp dụng hoặc không có câu trả lời đúng sai cụ thể.

Đề thi kết thúc học phần môn Cấu trúc dữ liệu và giải thuật, bao gồm các câu hỏi về thuật toán sắp xếp Shell sort, cây AVL, hàm băm với các phương pháp giải quyết đụng độ, và ứng dụng cây nhị phân tìm kiếm (BST) để quản lý thông tin bàn trong một quán cà phê.


4 câu hỏi 90 phút

Câu hỏi liên quan