[Cánh diều] Trắc nghiệm Tin học 11 KHMT bài 9 Lập trình thuật toán sắp xếp nhanh

[Cánh diều] Trắc nghiệm Tin học 11 KHMT bài 9 Lập trình thuật toán sắp xếp nhanh

1. Để cải thiện hiệu suất của thuật toán sắp xếp nhanh khi xử lý các mảng có nhiều phần tử trùng lặp, người ta thường sử dụng kỹ thuật nào?
2. Khi phân tích độ phức tạp của Quick Sort, trường hợp xấu nhất (worst-case) xảy ra khi nào?
3. Khi thực hiện thuật toán sắp xếp nhanh (Quick Sort) trên một mảng các số nguyên, nếu mảng ban đầu đã được sắp xếp theo thứ tự tăng dần, chiến lược chọn chốt nào sau đây sẽ dẫn đến hiệu suất kém nhất (gần với trường hợp xấu nhất)?
4. Trong một phiên bản của Quick Sort, bước phân hoạch Lomuto được sử dụng. Con trỏ i được duy trì để chỉ ra ranh giới giữa các phần tử nhỏ hơn hoặc bằng chốt và các phần tử chưa được xét. Nếu phần tử hiện tại nhỏ hơn chốt, điều gì sẽ xảy ra?
5. Nếu ta có một mảng chỉ chứa các phần tử giống nhau, ví dụ: [7, 7, 7, 7, 7]. Khi áp dụng Quick Sort với chốt là 7, bước phân hoạch sẽ hoạt động như thế nào theo cách thông thường?
6. Độ phức tạp thời gian trường hợp xấu nhất của thuật toán sắp xếp nhanh (Quick Sort) là bao nhiêu?
7. Trong thuật toán sắp xếp nhanh, bước phân hoạch Lomuto và Hoare có điểm khác biệt cơ bản nào?
8. Một biến thể phổ biến của thuật toán sắp xếp nhanh là IntroSort. Mục đích chính của IntroSort là gì?
9. Khi cài đặt thuật toán sắp xếp nhanh (Quick Sort) bằng đệ quy, điều kiện dừng (base case) cho đệ quy là gì?
10. Nếu một mảng được sắp xếp bằng thuật toán sắp xếp nhanh (Quick Sort) và ta quan sát thấy nó luôn thực hiện phân hoạch rất mất cân bằng, dẫn đến độ phức tạp O(n^2), thì nguyên nhân khả dĩ nhất là gì?
11. Khi so sánh Quick Sort và Merge Sort về tính ổn định (stability), thuật toán nào thường được coi là không ổn định?
12. Khi thực hiện thuật toán sắp xếp nhanh trên một mảng có nhiều phần tử trùng lặp, ví dụ: [5, 2, 8, 5, 1, 5, 9, 5]. Nếu ta chọn chốt là 5 và thực hiện phân hoạch theo cách thông thường (chỉ chia thành nhỏ hơn chốt và lớn hơn chốt), điều gì có thể xảy ra?
13. Trong thuật toán sắp xếp nhanh (Quick Sort), bước chọn chốt (pivot) có vai trò quan trọng nhất đối với hiệu quả hoạt động của thuật toán. Theo phân tích phổ biến, yếu tố nào sau đây được xem là quan trọng nhất khi lựa chọn chốt để đảm bảo hiệu suất tốt nhất trên thực tế, đặc biệt khi dữ liệu có thể đã được sắp xếp hoặc sắp xếp ngược?
14. Trong quá trình phân hoạch (partitioning) của Quick Sort, nếu ta sử dụng hai con trỏ i và j chạy từ hai đầu mảng về phía giữa, dừng lại khi A[i] > pivot và A[j] < pivot, sau đó hoán vị A[i] và A[j]. Quy trình này tiếp tục cho đến khi nào?
15. Phân hoạch (partitioning) là một bước cốt lõi trong thuật toán sắp xếp nhanh. Mục tiêu chính của bước phân hoạch là gì?
16. Thuật toán sắp xếp nhanh (Quick Sort) là một thuật toán sắp xếp dựa trên phương pháp nào?
17. Khi số lượng phần tử trong mảng cần sắp xếp rất nhỏ (ví dụ: dưới 10 phần tử), việc sử dụng thuật toán sắp xếp nhanh (Quick Sort) có thể kém hiệu quả hơn so với các thuật toán sắp xếp đơn giản như Sắp xếp chèn (Insertion Sort). Tại sao lại như vậy?
18. Cải tiến randomized Quick Sort (Quick Sort ngẫu nhiên) thực hiện bằng cách nào để cải thiện hiệu suất?
19. Trong một biến thể của Quick Sort, người ta chọn phần tử chốt bằng cách lấy trung vị của ba phần tử: phần tử đầu tiên, phần tử giữa và phần tử cuối cùng của mảng con. Ưu điểm chính của phương pháp này là gì?
20. Thuật toán Quick Sort hoạt động như thế nào trên một mảng rỗng hoặc mảng chỉ có một phần tử?
21. Độ phức tạp thời gian trung bình của thuật toán sắp xếp nhanh (Quick Sort) là bao nhiêu?
22. So với thuật toán sắp xếp trộn (Merge Sort), thuật toán sắp xếp nhanh (Quick Sort) thường có ưu điểm gì về việc sử dụng bộ nhớ (space complexity)?
23. Khi áp dụng thuật toán sắp xếp nhanh cho một mảng rất lớn, việc sử dụng đệ quy sâu có thể dẫn đến lỗi tràn bộ nhớ (stack overflow). Để khắc phục vấn đề này, một kỹ thuật thường được áp dụng là gì?
24. Trong quá trình sắp xếp nhanh (Quick Sort), nếu ta quyết định sử dụng Sắp xếp chèn (Insertion Sort) cho các mảng con có kích thước nhỏ hơn hoặc bằng một ngưỡng nhất định (ví dụ: 10 phần tử), thì lợi ích chính của việc kết hợp này là gì?
25. Trong bước phân hoạch của Quick Sort, khi sử dụng phương pháp Hoare, hai con trỏ i và j di chuyển từ hai phía. Con trỏ i tăng cho đến khi A[i] >= pivot, và con trỏ j giảm cho đến khi A[j] <= pivot. Nếu i < j, chúng ta hoán vị A[i] và A[j]. Sau khi hoán vị, điều gì xảy ra với các con trỏ?