Trắc nghiệm Tin học 11 Kết nối tri thức Bài 21: Các thuật toán sắp xếp đơn giản - Đề 07
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 21: Các thuật toán sắp xếp đơn giản - Đề 07 đượ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: Thuật toán sắp xếp nào trong số các thuật toán đơn giản (Nổi bọt, Chọn, Chèn) có đặc điểm là ở mỗi bước lặp, nó tìm phần tử nhỏ nhất trong phần mảng chưa được sắp xếp và đặt nó vào vị trí đúng của nó?
- 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ó đặc điểm này.
Câu 2: Xét mảng A = [7, 3, 8, 1, 5]. Sau khi áp dụng thuật toán Sắp xếp nổi bọt (Bubble Sort) và hoàn thành lượt duyệt đầu tiên (tức là vòng lặp ngoài chạy 1 lần, vòng lặp trong chạy hết), mảng A sẽ có dạng như thế nào?
- A. [1, 3, 5, 7, 8]
- B. [3, 1, 5, 7, 8]
- C. [7, 3, 8, 1, 5]
- D. [3, 7, 1, 5, 8]
Câu 3: Độ phức tạp thời gian trong trường hợp tốt nhất (best-case time complexity) của thuật toán Sắp xếp chèn (Insertion Sort) là gì? Giải thích tại sao.
- A. O(n), vì mỗi phần tử chỉ cần so sánh với phần tử đứng trước nó một lần.
- B. O(n), vì số lần hoán đổi là tối thiểu.
- C. O(n^2), vì vẫn cần các vòng lặp lồng nhau.
- D. O(n log n), vì số bước giảm đi đáng kể.
Câu 4: Điều nào sau đây là một nhược điểm của thuật toán Sắp xếp chọn (Selection Sort) so với Sắp xếp chèn (Insertion Sort) và Sắp xếp nổi bọt (Bubble Sort) khi xét về số lượng phép hoán đổi (swap) trong trường hợp xấu nhất?
- A. Sắp xếp chọn thực hiện ít phép hoán đổi hơn, điều này không phải là nhược điểm.
- B. Sắp xếp chọn thực hiện nhiều phép hoán đổi hơn.
- C. Sắp xếp chọn có độ phức tạp thời gian xấu nhất cao hơn.
- D. Sắp xếp chọn không ổn định, điều này không liên quan trực tiếp đến số phép hoán đổi.
Câu 5: Thuật toán Sắp xếp chèn (Insertion Sort) được mô tả là "ổn định" (stable). Tính chất "ổn định" của thuật toán sắp xếp có ý nghĩa gì?
- A. Thuật toán luôn hoàn thành trong thời gian O(n).
- B. Thuật toán sử dụng không gian bộ nhớ phụ không đáng kể (in-place).
- C. Các phần tử có giá trị bằng nhau sẽ giữ nguyên thứ tự tương đối của chúng so với thứ tự ban đầu.
- D. Thuật toán hoạt động hiệu quả trên các mảng đã được sắp xếp một phần.
Câu 6: Xét mảng B = [10, 4, 6, 1, 8]. Áp dụng thuật toán Sắp xếp chọn (Selection Sort) để sắp xếp mảng theo thứ tự tăng dần. Sau khi hoàn thành bước lặp thứ hai (tức là đã đặt đúng vị trí cho 2 phần tử đầu tiên), mảng B sẽ có dạng như thế nào?
- A. [1, 4, 6, 8, 10]
- B. [1, 4, 10, 6, 8]
- C. [1, 4, 6, 10, 8]
- D. [1, 6, 4, 10, 8]
Câu 7: Tại sao cả ba thuật toán Sắp xếp nổi bọt, Sắp xếp chọn và Sắp xếp chèn đều có độ phức tạp thời gian trường hợp xấu nhất là O(n^2)?
- A. Chúng đều có cấu trúc vòng lặp lồng nhau, trong đó mỗi vòng lặp chạy khoảng n lần.
- B. Chúng đều thực hiện số lượng phép hoán đổi lớn trong trường hợp xấu nhất.
- C. Chúng không sử dụng kỹ thuật chia để trị.
- D. Chúng yêu cầu bộ nhớ phụ O(n).
Câu 8: Xét mảng C = [6, 2, 5, 1, 4]. Áp dụng thuật toán Sắp xếp chèn (Insertion Sort) để sắp xếp mảng theo thứ tự tăng dần. Sau khi phần tử thứ ba (giá trị 5) được chèn vào đúng vị trí trong mảng con đã sắp xếp, mảng C sẽ có dạng như thế nào?
- A. [1, 2, 4, 5, 6]
- B. [2, 5, 6, 1, 4]
- C. [2, 6, 5, 1, 4]
- D. [6, 2, 5, 1, 4]
Câu 9: Giả sử bạn cần sắp xếp một danh sách liên kết (linked list). Thuật toán sắp xếp đơn giản nào sẽ gặp khó khăn ít nhất khi áp dụng trực tiếp trên cấu trúc dữ liệu này mà không cần chuyển đổi sang mả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 đều gặp khó khăn tương đương.
Câu 10: Trong thuật toán Sắp xếp nổi bọt (Bubble Sort), điều gì xảy ra với phần tử lớn nhất trong phần mảng chưa sắp xếp sau mỗi lần lượt duyệt (pass) của vòng lặp ngoài?
- A. Nó được đưa về vị trí cuối cùng của phần mảng chưa sắp xếp.
- B. Nó được đưa về vị trí đầu tiên của phần mảng chưa sắp xếp.
- C. Nó được chèn vào đúng vị trí trong phần mảng đã sắp xếp.
- D. Nó được hoán đổi với phần tử nhỏ nhất trong phần mảng chưa sắp xếp.
Câu 11: Thuật toán sắp xếp đơn giản nào luôn thực hiện cùng một số lượng phép so sánh (khoảng n^2/2), bất kể dữ liệu đầu vào được sắp xếp như thế nào?
- 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ào trong số này.
Câu 12: Xét mảng D = [4, 1, 3, 2]. Áp dụng thuật toán Sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần. Thuật toán sẽ dừng lại sau bao nhiêu lượt duyệt (pass) tối thiểu nếu không có cặp nào cần hoán đổi trong một lượt duyệt?
- A. 1
- B. 2
- C. 3 (hoàn thành sắp xếp nhưng cần 1 lượt kiểm tra nữa)
- D. 3 (lượt thứ 3 không có hoán đổi, thuật toán dừng)
Câu 13: Khi nào thì thuật toán Sắp xếp chèn (Insertion Sort) hoạt động hiệu quả nhất trong các trường hợp của O(n^2)?
- A. Khi mảng đầu vào đã gần được sắp xếp.
- B. Khi mảng đầu vào được sắp xếp ngược lại.
- C. Khi mảng đầu vào chứa nhiều phần tử trùng lặp.
- D. Hiệu quả không phụ thuộc vào trạng thái ban đầu của mảng.
Câu 14: Thuật toán Sắp xếp chọn (Selection Sort) có tính chất là không ổn định (unstable). Điều này có nghĩa là gì?
- A. Độ phức tạp thời gian của nó thay đổi đáng kể tùy thuộc vào đầu vào.
- B. Thứ tự tương đối của các phần tử có giá trị bằng nhau có thể bị thay đổi sau khi sắp xếp.
- C. Nó yêu cầu thêm một lượng lớn bộ nhớ phụ.
- D. Số lần hoán đổi của nó là cố định.
Câu 15: Giả sử bạn có một mảng rất nhỏ (ví dụ, dưới 10 phần tử). Thuật toán sắp xếp đơn giản nào thường được coi là lựa chọn tốt nhất trong trường hợp này và tại sao?
- A. Sắp xếp nổi bọt, vì nó dễ hiểu nhất.
- B. Sắp xếp chọn, vì nó có số lần hoán đổi ít nhất.
- C. Sắp xếp chèn, vì nó có chi phí cố định thấp và hiệu quả trên mảng nhỏ.
- D. Cả ba đều có hiệu quả tương đương nhau trên mảng rất nhỏ.
Câu 16: Điều nào sau đây không phải là đặc điểm chung của ba thuật toán sắp xếp đơn giản (Nổi bọt, Chọn, Chèn)?
- A. Độ phức tạp thời gian trường hợp xấu nhất là O(n^2).
- B. Đều là thuật toán ổn định (stable).
- C. Đều là thuật toán tại chỗ (in-place).
- D. Đều dựa trên việc so sánh các phần tử.
Câu 17: Xét mảng E = [2, 8, 5, 3, 9, 4]. Áp dụng Sắp xếp chèn (Insertion Sort). Mảng con đã sắp xếp ban đầu là [2]. Sau khi chèn phần tử 8, mảng con đã sắp xếp là [2, 8]. Sau khi chèn phần tử 5, mảng con đã sắp xếp là [2, 5, 8]. Tiếp tục quá trình này. Sau khi chèn phần tử cuối cùng (giá trị 4), mảng E sẽ có dạng như thế nào?
- A. [2, 3, 4, 5, 8, 9]
- B. [2, 8, 5, 3, 9, 4]
- C. [2, 3, 5, 8, 9, 4]
- D. [2, 5, 8, 3, 9, 4]
Câu 18: Trong trường hợp xấu nhất, thuật toán Sắp xếp nổi bọt (Bubble Sort) thực hiện bao nhiêu phép hoán đổi (swap)?
- A. O(n)
- B. O(n log n)
- C. O(1)
- D. O(n^2)
Câu 19: Thuật toán sắp xếp nào trong số các thuật toán đơn giản có độ phức tạp thời gian trường hợp tốt nhất là O(n), trong khi trường hợp xấu nhất là O(n^2)?
- 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ào trong số này.
Câu 20: Điều nào sau đây miêu tả không chính xác về thuật toán Sắp xếp chèn (Insertion Sort)?
- A. Ở mỗi bước, nó lấy một phần tử từ phần chưa sắp xếp và chèn vào đúng vị trí trong phần đã sắp xếp.
- B. Nó là một thuật toán sắp xếp tại chỗ (in-place).
- C. Nó là một thuật toán sắp xếp ổn định (stable).
- D. Độ phức tạp thời gian trường hợp tốt nhất của nó là O(n^2).
Câu 21: Xét mảng F = [5, 2, 4, 6, 1, 3]. Áp dụng Sắp xếp chọn (Selection Sort). Sau khi hoàn thành bước lặp thứ ba (đã đặt đúng vị trí cho 3 phần tử đầu tiên), mảng F sẽ có dạng như thế nào?
- A. [1, 2, 3, 4, 5, 6]
- B. [1, 2, 4, 6, 5, 3]
- C. [1, 2, 3, 6, 5, 4]
- D. [1, 2, 3, 5, 6, 4]
Câu 22: Thuật toán sắp xếp đơn giản nào được coi là kém hiệu quả nhất trong thực tế cho hầu hết các trường hợp, mặc dù nó dễ hiểu và cài đặ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. Cả ba đều kém hiệu quả như nhau.
Câu 23: Điều gì xảy ra trong vòng lặp bên trong của thuật toán Sắp xếp nổi bọt (Bubble Sort)?
- A. Tìm phần tử nhỏ nhất trong phần chưa sắp xếp.
- B. So sánh và hoán đổi các phần tử liền kề nếu không đúng thứ tự.
- C. Chèn phần tử hiện tại vào đúng vị trí trong phần đã sắp xếp.
- D. Chia mảng thành hai nửa.
Câu 24: Thuật toán sắp xếp đơn giản nào không có khả năng dừng sớm (tức là không thể nhận biết mảng đã sắp xếp trước khi hoàn thành tất cả các bước lặp cần thiết theo công thức O(n^2))?
- 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 đều có khả năng dừng sớm.
Câu 25: Xét mảng G = [9, 7, 5, 3, 1]. Đây là trường hợp xấu nhất cho thuật toán Sắp xếp nổi bọt (Bubble Sort) khi sắp xếp tăng dần. Tại sao?
- A. Mảng được sắp xếp ngược lại, đòi hỏi số lượng hoán đổi và so sánh tối đa.
- B. Mảng đã được sắp xếp hoàn toàn.
- C. Mảng chứa nhiều phần tử trùng lặp.
- D. Mảng chỉ có một phần tử duy nhất.
Câu 26: Bạn được yêu cầu sắp xếp một mảng dữ liệu mà bạn biết chắc chắn rằng nó đã được sắp xếp gần hết. Thuật toán sắp xếp đơn giản nào là lựa chọn tối ưu nhất về mặt hiệu suất trong tình huống này?
- 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 hiệu quả hơn thuật toán khác trong trường hợp này.
Câu 27: Điểm khác biệt chính trong cơ chế hoạt động giữa Sắp xếp nổi bọt (Bubble Sort) và Sắp xếp chèn (Insertion Sort) là gì?
- A. Sắp xếp nổi bọt so sánh và hoán đổi các phần tử liền kề, trong khi Sắp xếp chèn chèn phần tử vào đúng vị trí trong mảng con đã sắp xếp.
- B. Sắp xếp nổi bọt tìm phần tử nhỏ nhất, trong khi Sắp xếp chèn tìm phần tử lớn nhất.
- C. Sắp xếp nổi bọt sử dụng đệ quy, trong khi Sắp xếp chèn sử dụng lặp.
- D. Sắp xếp nổi bọt là tại chỗ, còn Sắp xếp chèn yêu cầu bộ nhớ phụ O(n).
Câu 28: Xét mảng H = [8, 1, 3, 6, 2]. Áp dụng Sắp xếp chèn (Insertion Sort). Sau khi phần tử có giá trị 6 được chèn vào đúng vị trí, mảng H sẽ có dạng như thế nào?
- A. [1, 2, 3, 6, 8]
- B. [1, 3, 8, 6, 2]
- C. [8, 1, 3, 6, 2]
- D. [1, 3, 6, 8, 2]
Câu 29: Thuật toán nào trong các thuật toán đơn giản (Nổi bọt, Chọn, Chèn) không phù hợp để sắp xếp các tập dữ liệu rất lớn (ví dụ: hàng triệu phần tử) trong thực 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. Cả ba thuật toán trên đều không phù hợp cho dữ liệu rất lớn.
Câu 30: Trong một bài kiểm tra, bạn thấy một câu hỏi yêu cầu sắp xếp mảng [4, 2, 5, 1, 3] bằng một thuật toán mà bạn không nhận ra tên. Mô tả thuật toán như sau: "Lặp đi lặp lại, duyệt qua mảng, so sánh từng cặp phần tử liền kề và hoán đổi chúng nếu chúng không đúng thứ tự. Sau mỗi lượt duyệt, phần tử lớn nhất chưa được sắp xếp sẽ ở đúng vị trí của nó." Thuật toán này là gì?
- 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ắp xếp nhanh (Quick Sort)