Trắc nghiệm Tin học 11 Kết nối tri thức Bài 19: Bài toán tìm kiếm - Đề 09 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Mục đích chính của các thuật toán sắp xếp là gì?
- A. Tìm kiếm một phần tử cụ thể trong danh sách.
- B. Lọc bỏ các phần tử trùng lặp khỏi danh sách.
- C. Sắp xếp các phần tử trong danh sách theo một thứ tự nhất định (tăng dần hoặc giảm dần).
- D. Thêm hoặc xóa phần tử khỏi danh sách.
Câu 2: Thuật toán sắp xếp nổi bọt (Bubble Sort) hoạt động dựa trên nguyên tắc nào?
- A. So sánh và hoán đổi vị trí các cặp phần tử liền kề nếu chúng không đúng thứ tự.
- B. Tìm phần tử nhỏ nhất (hoặc lớn nhất) trong phần chưa sắp xếp và đưa về đúng vị trí.
- C. Xây dựng mảng con đã sắp xếp bằng cách chèn từng phần tử vào đúng vị trí.
- D. Chia mảng thành hai nửa rồi sắp xếp từng nửa một cách đệ quy.
Câu 3: Cho mảng A = [6, 3, 8, 2, 5]. Sau khi thực hiện **một lượt (pass)** đầu tiên của thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần, mảng A sẽ có trạng thái như thế nào?
- A. [2, 3, 5, 6, 8]
- B. [3, 6, 2, 5, 8]
- C. [6, 3, 8, 2, 5]
- D. [3, 6, 2, 5, 8]
Câu 4: Cho mảng A = [6, 3, 8, 2, 5]. Thuật toán sắp xếp chọn (Selection Sort) hoạt động bằng cách tìm phần tử nhỏ nhất trong phần chưa sắp xếp và đưa về đầu. Sau khi thực hiện **lần đặt phần tử đầu tiên** vào đúng vị trí, mảng A sẽ có trạng thái như thế nào?
- A. [2, 3, 8, 6, 5]
- B. [6, 3, 8, 2, 5]
- C. [2, 3, 5, 6, 8]
- D. [3, 6, 8, 2, 5]
Câu 5: Cho mảng A = [6, 3, 8, 2, 5]. Thuật toán sắp xếp chèn (Insertion Sort) hoạt động bằng cách chèn từng phần tử vào phần đã sắp xếp. Sau khi xử lý và chèn xong **phần tử thứ hai** (giá trị 3), mảng A sẽ có trạng thái như thế nào?
- A. [3, 6, 8, 2, 5]
- B. [3, 6, 8, 2, 5]
- C. [6, 3, 8, 2, 5]
- D. [2, 3, 6, 8, 5]
Câu 6: Thuật toán sắp xếp nào trong các thuật toán đơn giản (Nổi bọt, Chọn, Chèn) có hiệu suất tốt nhất trong trường hợp mảng đầu vào **đã được sắp xếp hoàn toàn**?
- A. Sắp xếp nổi bọt (Bubble Sort) không có tối ưu.
- B. Sắp xếp chọn (Selection Sort).
- C. Sắp xếp chèn (Insertion Sort).
- D. Cả ba thuật toán đều có hiệu suất như nhau trong trường hợp này.
Câu 7: Độ phức tạp thời gian trong trường hợp xấu nhất (worst-case time complexity) của các thuật toán sắp xếp đơn giản như Nổi bọt, Chọn, Chèn là gì (với n là số phần tử)?
- A. O(n^2)
- B. O(n log n)
- C. O(n)
- D. O(log n)
Câu 8: Khi sắp xếp một mảng gồm 1000 phần tử bằng thuật toán sắp xếp chọn (Selection Sort), số lượt (pass) chính mà thuật toán cần thực hiện để đưa các phần tử về đúng vị trí cuối cùng là bao nhiêu?
- A. 1000
- B. Khoảng log₂(1000)
- C. 999
- D. Không xác định được vì phụ thuộc vào trạng thái ban đầu của mảng.
Câu 9: Thuật toán sắp xếp nào trong các thuật toán đơn giản **không** thực hiện hoán đổi vị trí các phần tử liền kề một cách trực tiếp như Bubble Sort?
- A. Sắp xếp nổi bọt (Bubble Sort).
- B. Sắp xếp chọn (Selection Sort).
- C. Sắp xếp chèn (Insertion Sort).
- D. Cả ba thuật toán đều thực hiện hoán đổi liền kề.
Câu 10: Giả sử bạn cần sắp xếp một danh sách rất nhỏ (khoảng dưới 20 phần tử) và sự đơn giản trong cài đặt là ưu tiên hàng đầu. Thuật toán sắp xếp đơn giản nào thường được coi là dễ hiểu và cài đặt nhất?
- A. Sắp xếp nổi bọt (Bubble Sort).
- B. Sắp xếp chọn (Selection Sort).
- C. Sắp xếp chèn (Insertion Sort).
- D. Không có thuật toán đơn giản nào nổi bật về sự dễ cài đặt.
Câu 11: Cho mảng A = [1, 2, 3, 4, 5]. Khi áp dụng thuật toán sắp xếp chèn (Insertion Sort) để sắp xếp tăng dần, số lần hoán đổi (swap) hoặc dịch chuyển (shift) phần tử sẽ là bao nhiêu?
- A. Nhiều nhất.
- B. Bằng số phần tử.
- C. Ít nhất nhưng không phải 0.
- D. 0 (hoặc rất ít dịch chuyển nếu mảng đã sắp xếp).
Câu 12: Trong trường hợp xấu nhất (ví dụ: mảng được sắp xếp ngược), thuật toán sắp xếp nào trong các thuật toán đơn giản (Nổi bọt, Chọn, Chèn) thực hiện số lần hoán đổi **ít nhất**?
- A. Sắp xếp nổi bọt (Bubble Sort).
- B. Sắp xếp chọn (Selection Sort).
- C. Sắp xếp chèn (Insertion Sort).
- D. Số lần hoán đổi là như nhau đối với cả ba thuật toán trong trường hợp xấu nhất.
Câu 13: Cho mảng A = [7, 1, 5, 12, 3]. Sau khi kết thúc **toàn bộ quá trình** sắp xếp bằng thuật toán sắp xếp chọn (Selection Sort) để sắp xếp tăng dần, mảng A sẽ có trạng thái như thế nào?
- A. [1, 3, 5, 7, 12]
- B. [1, 5, 7, 3, 12]
- C. [1, 7, 5, 12, 3]
- D. [3, 1, 5, 7, 12]
Câu 14: Cho mảng A = [7, 1, 5, 12, 3]. Sau khi kết thúc **toàn bộ quá trình** sắp xếp bằng thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần, mảng A sẽ có trạng thái như thế nào?
- A. [7, 1, 5, 12, 3]
- B. [1, 7, 5, 3, 12]
- C. [1, 3, 5, 7, 12]
- D. [1, 5, 7, 3, 12]
Câu 15: Cho mảng A = [7, 1, 5, 12, 3]. Sau khi kết thúc **toàn bộ quá trình** sắp xếp bằng thuật toán sắp xếp chèn (Insertion Sort) để sắp xếp tăng dần, mảng A sẽ có trạng thái như thế nào?
- A. [7, 1, 5, 12, 3]
- B. [1, 3, 5, 7, 12]
- C. [1, 5, 7, 3, 12]
- D. [1, 7, 5, 12, 3]
Câu 16: Một mảng được sắp xếp bằng một thuật toán đơn giản và sau vài bước, mảng có dạng: [2, 5, 8, 1, 4]. Phần tử 2, 5, 8 đã ở đúng vị trí tương đối so với nhau. Thuật toán nào có khả năng đã được sử dụng?
- A. Sắp xếp nổi bọt (Bubble Sort).
- B. Sắp xếp chọn (Selection Sort).
- C. Sắp xếp chèn (Insertion Sort).
- D. Không thể xác định chỉ với thông tin này.
Câu 17: Một mảng được sắp xếp bằng một thuật toán đơn giản và sau vài bước, mảng có dạng: [1, 3, 8, 6, 5]. Phần tử nhỏ nhất (1) đã được đưa về đầu. Thuật toán nào có khả năng đã được sử dụng?
- A. Sắp xếp nổi bọt (Bubble Sort).
- B. Sắp xếp chọn (Selection Sort).
- C. Sắp xếp chèn (Insertion Sort).
- D. Cả ba thuật toán đều có thể tạo ra trạng thái này.
Câu 18: Đặc điểm nào sau đây là **đúng** khi so sánh giữa Sắp xếp chọn (Selection Sort) và Sắp xếp nổi bọt (Bubble Sort) trên một mảng ngẫu nhiên có kích thước lớn?
- A. Selection Sort thường thực hiện ít hoán đổi hơn Bubble Sort.
- B. Bubble Sort luôn nhanh hơn Selection Sort.
- C. Selection Sort có độ phức tạp thời gian tốt hơn Bubble Sort trong trường hợp xấu nhất.
- D. Cả hai thuật toán đều có cùng số lần so sánh trong mọi trường hợp.
Câu 19: Thuật toán sắp xếp chèn (Insertion Sort) được cho là hiệu quả hơn Sắp xếp nổi bọt (Bubble Sort) và Sắp xếp chọn (Selection Sort) trong trường hợp nào?
- A. Mảng có kích thước rất lớn.
- B. Mảng chứa nhiều phần tử trùng lặp.
- C. Mảng gần như đã được sắp xếp.
- D. Mảng được sắp xếp theo thứ tự ngược hoàn toàn.
Câu 20: Khi sử dụng thuật toán sắp xếp nổi bọt (Bubble Sort), sau mỗi lượt (pass), điều gì xảy ra với phần tử lớn nhất trong phần chưa sắp xếp?
- A. Nó
- B. Nó được hoán đổi với phần tử đầu tiên của mảng.
- C. Nó được chèn vào đúng vị trí trong phần đã sắp xếp.
- D. Vị trí của nó không thay đổi trong lượt đó.
Câu 21: Thuật toán sắp xếp chọn (Selection Sort) luôn đảm bảo rằng sau k lượt (pass) đầu tiên, điều gì là đúng về k phần tử đầu tiên của mảng?
- A. Chúng là k phần tử nhỏ nhất của mảng ban đầu và đã được sắp xếp đúng thứ tự tương đối so với nhau.
- B. Chúng là k phần tử đầu tiên của mảng ban đầu.
- C. Chúng là k phần tử lớn nhất của mảng ban đầu.
- D. Chúng là k phần tử nhỏ nhất của mảng ban đầu và đã được sắp xếp đúng thứ tự cuối cùng.
Câu 22: Thuật toán sắp xếp chèn (Insertion Sort) duy trì một mảng con đã sắp xếp. Mảng con này ban đầu bao gồm bao nhiêu phần tử?
- A. 0
- B. 1 (phần tử đầu tiên của mảng)
- C. 2
- D. Tất cả các phần tử của mảng.
Câu 23: Trong thuật toán sắp xếp chèn (Insertion Sort), khi chèn một phần tử vào mảng con đã sắp xếp, các phần tử lớn hơn nó trong mảng con sẽ được thực hiện hành động gì?
- A. Dịch chuyển sang phải một vị trí.
- B. Dịch chuyển sang trái một vị trí.
- C. Hoán đổi vị trí với phần tử đang chèn.
- D. Giữ nguyên vị trí.
Câu 24: So sánh số lần so sánh giữa Sắp xếp nổi bọt (Bubble Sort) và Sắp xếp chèn (Insertion Sort) trong trường hợp xấu nhất (mảng ngược).
- A. Bubble Sort luôn thực hiện ít so sánh hơn Insertion Sort.
- B. Insertion Sort luôn thực hiện ít so sánh hơn Bubble Sort.
- C. Số lần so sánh có cùng bậc O(n^2), nhưng giá trị cụ thể có thể khác nhau.
- D. Cả hai đều thực hiện n lần so sánh.
Câu 25: Khi nào thì việc sử dụng một trong các thuật toán sắp xếp đơn giản (Nổi bọt, Chọn, Chèn) là **không** hiệu quả cho một tập dữ liệu lớn (ví dụ: hàng triệu phần tử)?
- A. Khi dữ liệu đã được sắp xếp.
- B. Khi dữ liệu gần được sắp xếp.
- C. Khi yêu cầu độ chính xác cao.
- D. Khi cần tốc độ xử lý nhanh.
Câu 26: Cho mảng A = [4, 1, 3, 2]. Sau khi kết thúc **lượt thứ hai** của thuật toán sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần (bắt đầu từ đầu mảng), mảng A sẽ có trạng thái như thế nào?
- A. [1, 3, 2, 4]
- B. [1, 2, 3, 4]
- C. [4, 1, 3, 2]
- D. [1, 3, 4, 2]
Câu 27: Cho mảng A = [4, 1, 3, 2]. Sau khi kết thúc **lần đặt phần tử thứ hai** vào đúng vị trí bằng thuật toán sắp xếp chọn (Selection Sort) để sắp xếp tăng dần, mảng A sẽ có trạng thái như thế nào?
- A. [1, 4, 3, 2]
- B. [1, 2, 3, 4]
- C. [4, 1, 3, 2]
- D. [1, 2, 3, 4]
Câu 28: Cho mảng A = [4, 1, 3, 2]. Sau khi xử lý và chèn xong **phần tử thứ ba** (giá trị 3) bằng thuật toán sắp xếp chèn (Insertion Sort) để sắp xếp tăng dần, mảng A sẽ có trạng thái như thế nào?
- A. [1, 3, 4, 2]
- B. [1, 2, 3, 4]
- C. [4, 1, 3, 2]
- D. [1, 4, 3, 2]
Câu 29: Khi phân tích hiệu quả của thuật toán sắp xếp, khái niệm
- A. Thời gian thực hiện tăng tuyến tính theo số lượng phần tử (n).
- B. Thời gian thực hiện tăng xấp xỉ bình phương số lượng phần tử (n).
- C. Thời gian thực hiện tăng theo logarit của số lượng phần tử (n).
- D. Thời gian thực hiện là hằng số, không phụ thuộc vào số lượng phần tử (n).
Câu 30: Giả sử bạn có một danh sách dữ liệu cần được sắp xếp rất thường xuyên, và tốc độ là yếu tố quan trọng nhất. Dựa trên hiểu biết về độ phức tạp thời gian, bạn nên chọn thuật toán sắp xếp đơn giản (O(n^2)) hay tìm hiểu các thuật toán phức tạp hơn (ví dụ: O(n log n))?
- A. Nên tìm hiểu các thuật toán phức tạp hơn (O(n log n)) vì chúng hiệu quả hơn đáng kể với dữ liệu lớn.
- B. Nên sử dụng các thuật toán đơn giản (O(n^2)) vì chúng dễ cài đặt hơn.
- C. Độ phức tạp thời gian không quan trọng bằng số lần hoán đổi.
- D. Nên chọn thuật toán dựa trên bộ nhớ sử dụng, không phải thời gian.