Haylamdo biên soạn và sưu tầm với 15 câu hỏi trắc nghiệm Tin học 11 Bài 9: Lập trình sắp xếp nhanh có đáp án chi tiết đầy đủ các mức độ sách Cánh diều sẽ giúp học sinh lớp 11 ôn luyện trắc nghiệm Tin 11 Khoa học máy tính.
Trắc nghiệm Tin học 11 Bài 9: Lập trình sắp xếp nhanh - Cánh diều
PHẦN I. Câu trắc nghiệm nhiều phương án lựa chọn. Thí sinh trả lời từ câu 1 đến câu 10. Mỗi câu hỏi thí sinh chỉ lựa chọn một phương án.
Câu 1: Thuật toán sắp xếp nhanh thuộc loại thuật toán nào?
A. Tìm kiếm tuyến tính
B. Tìm kiếm nhị phân
C. Chia để trị
D. Đệ quy
Đáp án: C
Giải thích: Thuật toán sắp xếp nhanh (Quick Sort) sử dụng chiến lược chia để trị, nơi mà dãy số được phân đoạn thành các phần nhỏ hơn và sắp xếp từng phần một.
Câu 2: Trong thuật toán sắp xếp nhanh, giá trị nào được chọn làm pivot?
A. Phần tử nhỏ nhất trong dãy
B. Phần tử lớn nhất trong dãy
C. Bất kỳ phần tử nào trong dãy
D. Phần tử đứng ở giữa
Đáp án: C
Giải thích: Pivot có thể là bất kỳ phần tử nào trong dãy, tuy nhiên, việc lựa chọn pivot có thể ảnh hưởng đến hiệu suất của thuật toán.
Câu 3: Lược đồ phân đoạn Lomuto sử dụng chỉ số nào để thực hiện việc phân đoạn?
A. Chỉ số j
B. Chỉ số i
C. Chỉ số k
D. Chỉ số p
Đáp án: B
Giải thích: Trong lược đồ phân đoạn Lomuto, chỉ số i được duy trì để xác định vị trí phân tách, trong khi chỉ số j được sử dụng để duyệt dãy số.
Câu 4: Lượt kiểm tra trong phân đoạn Hoare bắt đầu từ đâu?
A. Bắt đầu từ vị trí trái và di chuyển sang phải
B. Bắt đầu từ vị trí phải và di chuyển sang trái
C. Cả hai đầu dãy số cùng tiến vào giữa
D. Từ giữa dãy số
Đáp án: C
Giải thích: Phân đoạn Hoare rà soát từ hai phía, trái và phải, cùng tiến dần vào giữa để tìm các phần tử vi phạm yêu cầu phân đoạn.
Câu 5: Để sắp xếp một danh sách theo thứ tự giảm dần trong thuật toán Quick Sort, điều gì cần được thay đổi?
A. Thay đổi giá trị pivot
B. Thay đổi phép so sánh trong câu lệnh if
C. Thay đổi cấu trúc của thuật toán
D. Thay đổi biến đầu vào
Đáp án: B
Giải thích: Để sắp xếp giảm dần, phép so sánh trong câu lệnh if a[j] <= pivot: cần được thay đổi thành ifa[j] >= pivot:.
Câu 6: Trong thuật toán phân đoạn Lomuto, giá trị nào được sử dụng làm pivot?
A. Phần tử đầu tiên
B. Phần tử cuối cùng
C. Phần tử giữa
D. Phần tử bất kỳ
Đáp án: B
Giải thích: Trong thuật toán phân đoạn Lomuto, giá trị của phần tử đứng cuối dãy được chọn làm pivot.
Câu 7: Điều gì xảy ra sau khi một dãy số đã được phân đoạn?
A. Dãy số sẽ được sắp xếp ngay lập tức.
B. Sẽ tiến hành phân đoạn lần nữa cho mỗi đoạn con.
C. Chỉ cần sắp xếp một lần duy nhất.
D. Dãy số sẽ không thay đổi.
Đáp án: B
Giải thích: Sau khi một dãy số đã được phân đoạn, thuật toán sẽ tiếp tục phân đoạn và sắp xếp các đoạn con cho đến khi tất cả các đoạn đều chỉ còn không quá một phần tử.
Câu 8: Trong thuật toán Quick Sort, thuật toán được gọi là "nhanh" vì lý do gì?
A. Nó sử dụng ít bộ nhớ.
B. Nó có độ phức tạp thời gian trung bình thấp.
C. Nó không cần phân đoạn.
D. Nó chỉ cần một lần duy nhất để sắp xếp.
Đáp án: B
Giải thích: Thuật toán Quick Sort có độ phức tạp thời gian trung bình là O(n log n), làm cho nó nhanh hơn nhiều thuật toán sắp xếp khác trong nhiều trường hợp.
Câu 9: Trong quá trình thực hiện sắp xếp nhanh, nếu một dãy số đã được sắp xếp hoàn toàn, thuật toán sẽ có độ phức tạp là gì?
A. O(n)
B. O(n log n)
C. O(n²)
D. O(log n)
Đáp án: C
Giải thích: Nếu dãy số đã được sắp xếp hoàn toàn và thuật toán chọn pivot là phần tử đầu tiên hoặc cuối cùng, độ phức tạp sẽ trở thành O(n²) trong trường hợp tồi tệ nhất.
Câu 10: Đặc điểm nào sau đây không đúng với thuật toán sắp xếp nhanh?
A. Nó có thể không sử dụng thêm bộ nhớ.
B. Nó có thể xử lý cả số âm và số dương.
C. Nó luôn chọn phần tử giữa làm pivot.
D. Nó có thể thực hiện sắp xếp trên các danh sách lớn.
Đáp án: C
Giải thích: Thuật toán sắp xếp nhanh không nhất thiết phải chọn phần tử giữa làm pivot; pivot có thể là bất kỳ phần tử nào trong dãy.
PHẦN II. Câu trắc nghiệm đúng sai. Thí sinh trả lời từ câu 1 đến câu 2. Trong mỗi ý a), b), c), d) ở mỗi câu, thí sinh chọn đúng hoặc sai
Câu 1: Lược đồ phân đoạn nào được sử dụng trong thuật toán sắp xếp nhanh Lomuto?
a) Lấy giá trị của phần tử đứng giữa làm pivot.
b) Lấy giá trị của phần tử đứng đầu làm pivot.
c) Lấy giá trị của phần tử đứng cuối làm pivot.
d) Lấy giá trị trung bình của tất cả các phần tử làm pivot.
a) Sai. Thuật toán Lomuto không sử dụng phần tử đứng giữa làm pivot; nó chọn phần tử đứng cuối.
b) Sai. Việc chọn phần tử đứng đầu làm pivot không phải là đặc điểm của thuật toán Lomuto.
c) Đúng. Trong thuật toán Lomuto, giá trị của phần tử đứng cuối được chọn làm pivot, giúp phân đoạn dãy số.
d) Sai. Lựa chọn giá trị trung bình của tất cả các phần tử không phải là cách phân đoạn trong thuật toán Lomuto
Câu 2: Ý tưởng chính của thuật toán phân đoạn Hoare là gì?
a) Duyệt dãy số từ trái sang phải và phân tách theo một chiều.
b) Đổi chỗ hai phần tử khi phát hiện phần tử vi phạm yêu cầu phân đoạn từ cả hai phía.
c) Luôn chọn phần tử đứng đầu dãy làm pivot để thực hiện phân đoạn.
d) Chỉ thực hiện phân đoạn khi dãy số có hơn hai phần tử.
a) Sai. Thuật toán Hoare kiểm tra dãy số từ cả hai phía (trái và phải), không chỉ từ trái sang phải.
b) Đúng. Ý tưởng chính của thuật toán phân đoạn Hoare là rà soát từ hai phía và đổi chỗ các phần tử khi phát hiện phần tử vi phạm yêu cầu phân đoạn.
c) Sai. Trong thuật toán Hoare, pivot có thể là phần tử đứng đầu, nhưng không giới hạn ở đó; nó có thể là bất kỳ phần tử nào.
d) Sai. Thuật toán Hoare vẫn có thể thực hiện phân đoạn ngay cả khi dãy số chỉ có hai phần tử.
PHẦN III. Câu trả lời ngắn. Thí sinh trả lời từ câu 1 đến câu 3
Câu 1: Lược đồ phân đoạn trong thuật toán sắp xếp nhanh là gì?
Câu 1: Đáp án: Lược đồ phân đoạn trong thuật toán sắp xếp nhanh là quy trình chọn một phần tử làm pivot (giá trị chốt), sau đó chia dãy số thành hai đoạn: một đoạn chứa các phần tử nhỏ hơn hoặc bằng pivot và một đoạn chứa các phần tử lớn hơn hoặc bằng pivot. Việc phân đoạn này được lặp lại cho đến khi tất cả các đoạn con chỉ còn một phần tử.
Giải thích: Việc phân đoạn giúp giảm quy mô của bài toán sắp xếp bằng cách chia nó thành các bài toán nhỏ hơn, từ đó làm cho quá trình sắp xếp nhanh hơn và hiệu quả hơn. Lược đồ này cho phép sắp xếp trong nội bộ hai đoạn con sau mỗi lần phân đoạn.
Câu 2: Ý tưởng chính của thuật toán phân đoạn Lomuto là gì?
Câu 2: Đáp án: Ý tưởng chính của thuật toán phân đoạn Lomuto là chọn pivot là phần tử đứng cuối của dãy số, sau đó sử dụng một chỉ số để duyệt qua dãy và hoán đổi các phần tử sao cho các phần tử nhỏ hơn hoặc bằng pivot nằm bên trái, trong khi các phần tử lớn hơn nằm bên phải.
Giải thích: Thuật toán này duy trì chỉ số phân tách và thực hiện hoán đổi khi phát hiện một phần tử nhỏ hơn hoặc bằng pivot. Cuối cùng, nó trả về vị trí phân tách để tiếp tục sắp xếp hai đoạn con. Điều này giúp tối ưu hóa quá trình sắp xếp, đảm bảo rằng pivot sẽ ở đúng vị trí sau mỗi lần phân đoạn.
Câu 3: Phân đoạn Hoare khác với phân đoạn Lomuto như thế nào?
Câu 3: Đáp án: Phân đoạn Hoare khác với phân đoạn Lomuto ở chỗ nó thực hiện kiểm tra từ cả hai phía (trái và phải) và hoán đổi các phần tử cho đến khi hai chỉ số gặp nhau, trong khi Lomuto chỉ kiểm tra từ một phía.
Giải thích: Phân đoạn Hoare sử dụng hai chỉ số để duyệt và hoán đổi các phần tử cho đến khi phát hiện một phần tử vi phạm yêu cầu phân đoạn. Điều này giúp nó thường có hiệu suất tốt hơn trong nhiều trường hợp, vì nó có thể giảm thiểu số lần hoán đổi cần thiết. Khi các chỉ số gặp nhau, thuật toán kết thúc và vị trí gặp nhau sẽ là vị trí phân tách cho dãy.
Xem thêm câu hỏi trắc nghiệm Tin học lớp 11 Cánh diều có đáp án hay khác: