Nội dung text Bài tập luyện tập Bài 21 - Các thuật toán sắp xếp đơn giản.pdf
D. A[i], A[iMin] = A[iMin], A[i] Đáp án: A Giải thích: iMin = i khởi tạo chỉ số nhỏ nhất. 8. Tại sao lớn nhất ở cuối sau vòng lặp đầu của sắp xếp nổi bọt? (Understand) A. Vì đổi chỗ đẩy lớn nhất về cuối B. Vì chèn vào dãy con C. Vì tìm nhỏ nhất D. Vì duyệt từ cuối dãy Đáp án: A Giải thích: Đổi chỗ cặp đẩy lớn nhất xuống cuối. 9. Để sắp xếp A = [5, 3, 9] bằng sắp xếp chọn, bước đầu tiên là gì? (Apply) A. Đổi 5 và 3 → [3, 5, 9] B. Chèn 3 trước 5 → [3, 5, 9] C. Đổi 5 và 9 → [9, 3, 5] D. Giữ nguyên → [5, 3, 9] Đáp án: A Giải thích: i = 0, min = 3, đổi 5 và 3. 10. Tại sao sắp xếp nổi bọt dùng 2 vòng lặp? (Understand) A. Để so sánh và đổi chỗ cặp phần tử B. Để tìm nhỏ nhất C. Để chèn phần tử D. Để giảm tốc độ Đáp án: A Giải thích: 2 vòng lặp duyệt và đổi chỗ cặp. 11. Chọn nhỏ nhất khác đổi chỗ ở điểm nào trong sắp xếp chọn? (Analyze) A. Chọn tìm iMin, đổi chỗ hoán vị A[i] và A[iMin] B. Đổi chỗ tìm iMin, chọn hoán vị C. Cả hai đều tìm iMin D. Không có sự khác biệt Đáp án: A Giải thích: Chọn (tìm), đổi (hoán vị) là 2 bước riêng. 12. Bước nào cần trong BubbleSort? (Remember) A. So sánh A[j] > A[j+1] B. Tìm nhỏ nhất từ i C. Chèn phần tử vào dãy con D. Duyệt từ cuối dãy Đáp án: A Giải thích: So sánh cặp là bước chính. 13. Bước nào cần trong InsertionSort? (Remember) A. Dịch phần tử lớn hơn sang phải B. Tìm nhỏ nhất từ i C. Đổi chỗ cặp phần tử D. Duyệt từ cuối dãy Đáp án: A Giải thích: Dịch chuyển để chèn. 14. Lệnh nào đổi chỗ trong BubbleSort? (Remember) A. A[j], A[j+1] = A[j+1], A[j] B. for i in range(n-1) C. if A[j] > A[j+1] D. n = len(A) Đáp án: A Giải thích: Hoán vị cặp phần tử. 15. Để sắp xếp A = [5, 3, 9] bằng nổi bọt, bước đầu tiên là gì? (Apply) A. Đổi 5 và 3 → [3, 5, 9] B. Chèn 3 trước 5 → [3, 5, 9]
C. Tìm nhỏ nhất → [3, 5, 9] D. Giữ nguyên → [5, 3, 9] Đáp án: A Giải thích: j = 0, 5 > 3, đổi chỗ. 16. Tại sao sắp xếp chọn chậm khi dãy lớn? (Understand) A. Luôn duyệt hết phần còn lại B. Vì chèn phần tử C. Vì đổi chỗ cặp phần tử D. Vì ít vòng lặp Đáp án: A Giải thích: Duyệt hết để tìm nhỏ nhất. 17. Vòng lặp ngoài khác trong ở đâu trong nổi bọt? (Analyze) A. Ngoài quản lý số vòng, trong đổi chỗ cặp B. Trong quản lý số vòng, ngoài đổi chỗ C. Cả hai đều đổi chỗ D. Không có sự khác biệt Đáp án: A Giải thích: Ngoài (i), trong (j) so sánh và đổi. 18. Lợi ích của sắp xếp nổi bọt khi dãy gần sắp xếp là gì? (Evaluate) A. Ít đổi chỗ, kết thúc sớm B. Nhanh hơn khi dãy lớn C. Dễ tìm nhỏ nhất D. Không cần vòng lặp Đáp án: A Giải thích: Hiệu quả khi ít đổi chỗ. 19. Lệnh nào tìm iMin trong SelectionSort? (Remember) A. if A[j] < A[iMin]: iMin = j B. for i in range(n-1) C. A[i], A[iMin] = A[iMin], A[i] D. n = len(A) Đáp án: A Giải thích: Cập nhật iMin khi tìm nhỏ hơn. 20. Bước nào cần trong BubbleSort? (Remember) A. Duyệt j từ 0 đến n-2-i B. Tìm nhỏ nhất từ i C. Chèn phần tử D. Giữ nguyên dãy Đáp án: A Giải thích: Duyệt j để so sánh cặp. B. Trắc nghiệm Đúng/Sai (TF) - 2 điểm Xác định đúng (Đ) hoặc sai (S) cho từng ý (mỗi ý 0,25 điểm, mỗi câu 1 điểm): Câu 1: Một học sinh sắp xếp A = [5, 3, 9] bằng InsertionSort: a) Duyệt từ phần tử thứ 2 là bước đầu (Đúng, Remember). b) Chèn 3 vào dãy con [5] → [3, 5] (Đúng, Understand). c) Vòng ngoài và trong có cùng chức năng (Sai, Analyze). d) 9 giữ nguyên vị trí ở bước thứ 2 (Đúng, Remember). Đáp án: a) Đ; b) Đ; c) S; d) Đ