Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản

Tóm tắt lý thuyết Tin học lớp 11 Bài 21: Các thuật toán sắp xếp đơn giản hay, chi tiết sách Kết nối tri thức sẽ giúp học sinh nắm vững kiến thức trọng tâm, ôn luyện để học tốt Tin học 11.

1 8,927 08/08/2026


Lý thuyết Tin học 11 Bài 21: Các thuật toán sắp xếp đơn giản

A. Lý thuyết Các thuật toán sắp xếp đơn giản

1. Thuật toán sắp xếp chèn

- Thuật toán sắp xếp chèn: chỉ số i chạy từ 1 đến n-1. Mỗi vòng "chèn" phần tử A[i] vào vị trí đúng của dãy con đã sắp xếp A[0] đến A[i-1].

- "Chèn" A[i] vào vị trí đúng trong dãy con A[0] đến A[i-1] bằng cách "nhấc" A[i] lên, chuyển các phần tử bên trái A[i] lớn hơn sang phải, và đặt A[i] vào vị trí đúng.

- Sau n-1 bước lặp, dãy được sắp xếp xong.

- Thuật toán sắp xếp chèn có thể mô tả bằng hàm insertionSort(A) như sau:

 Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản (ảnh 1)

2. Thuật toán sắp xếp chọn

- Thuật toán sắp xếp chọn: chỉ số i chạy từ 0 đến n-2.

- Tại mỗi bước lặp, tìm phần tử nhỏ nhất trong dãy A[i], A[i+1], A[n-1] và đổi chỗ phần tử nhỏ nhất này với A[i].

- Mô tả thuật toán chọn như sau:

 Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản (ảnh 1)

- Thuật toán sắp xếp chọn có thể mô tả bằng hàm insertionSort(A) như sau:

 Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản (ảnh 1)

3. Thuật toán sắp xếp nổi bọt

- Thuật toán sắp xếp nổi bọt lấy ý tưởng từ hiện tượng "nổi bọt" của không khí dưới nước.

- Ý tưởng của thuật toán nổi bọt: liên tục đổi chỗ hai phần tử cạnh nhau nếu chúng chưa được sắp thứ tự đúng.

 Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản (ảnh 1)

- Chỉ số j chạy từ 0 đến n-2 và kiểm tra hai phần tử liền nhau A[j], A[j+1], nếu chưa sắp thứ tự đúng thì đổi chỗ.

- Sau mỗi vòng lặp, phần tử lớn nhất được chuyển về cuối dãy.

- Không cần đủ n-1 bước lặp, với chỉ số i, vòng lặp ở dòng 2 chỉ cần n-1-i bước lặp.

- Thuật toán sắp xếp chọn có thể mô tả bằng hàm BubbleSort(A) như sau:

 Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản (ảnh 1)

Sơ đồ tư duy Các thuật toán sắp xếp đơn giản

Lý thuyết Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản (ảnh 1)

B. Bài tập Các thuật toán sắp xếp đơn giản

Câu 1: Thuật toán sắp xếp nổi bọt sắp xếp danh sách bằng cách nào?

A. Thay thế.

B. Thay đổi.

C. Hoán đổi.

D. Cả A, B và C.

Câu 2: Thuật toán sắp xếp nổi bọt sắp xếp danh sách bằng cách hoán đổi các phần tử liền kề bao nhiêu lần?

A. Một lần.

B. Hai lần.

C. Mười lần.

D. Nhiều lần.

Câu 3: Trong thuật toán sắp xếp nổi bọt, ta thực hiện hoán đổi giá trị các phần tử liền kề khi nào?

A. Giá trị của chúng tăng.

B. Giá trị của chúng giảm.

C. Giá trị của chúng không đúng thứ tự.

D. Giá trị của chúng không bằng nhau.

Câu 4: Trong thuật toán sắp xếp nổi bọt thì dấu hiệu để biết dãy chưa sắp xếp xong là gì?

A. Vẫn còn cặp phần tử liền kế không đúng thứ tự mong muốn.

B. Dãy chưa được sắp xếp tăng dần.

C. Dãy chưa được sắp xếp giảm dần.

D. Cả A, B và C.

Câu 5: Cho dãy số: 15, 1, 31, 9, 78, 42. Nếu sử dụng thuật toán sắp xếp nổi bọt để sắp xếp dãy trên tăng dần thì sau bao nhiêu lượt đổi chỗ thì thuật toán kết thúc?

A. 2

B. 3

C. 4

D. 5

Câu 6: Trong thuật toán sắp xếp nổi bọt kết thúc khi nào?

A. Khi các phần tử đã nằm đúng thứ tự mong muốn.

B. Không còn bất kì cặp liền kề trái thứ tự mong muốn.

C. Không còn xảy ra đổi chỗ lần nào nữa.

D. Cả A, B và C.

Câu 7: Cho dãy số: 6, 4, 5, 3. Nếu sử dụng thuật toán sắp xếp nổi bọt để sắp xếp dãy tăng dần thì sau bao nhiêu vòng lặp thì thuật toán kết thúc?

A. 2

B. 3

C. 4

D. 5

Câu 8: Thuật toán sắp xếp nổi chọn xét từng vị trí phần tử từ:

A. Đầu đến cuối

B. Cuối đến đầu

C. Giữa đến đầu

D. Giữa đến cuối

Câu 9: Tại sao chúng ta chia bài toán thành những bài toán nhỏ hơn?

A. Để thay đổi đầu vào của bài toán.

B. Để thay đổi yêu cầu đầu ra của bài toán.

C. Để bài toán dễ giải quyết hơn.

D. Để bài toán khó giải quyết hơn.

Câu 10: Mô tả thuật toán sắp xếp chọn bằng ngôn ngữ tự nhiên gồm có mấy bước?

A. 2

B. 3

C. 4

D. 5

Trắc nghiệm Tin học 11 Bài 21: Các thuật toán sắp xếp đơn giản

Câu 1: Ý tưởng chính của thuật toán sắp xếp chèn là gì?

A. Tìm phần tử nhỏ nhất và chuyển nó vào vị trí đầu tiên.

B. So sánh từng cặp phần tử liền kề và hoán đổi nếu chúng không đúng thứ tự.

C. Chèn từng phần tử vào đúng vị trí trong một mảng con đã sắp xếp.

D. Chia mảng thành hai phần và sắp xếp từng phần đệ quy.

Đáp án: C

Giải thích: Thuật toán sắp xếp chèn hoạt động bằng cách lấy các phần tử từ phần chưa sắp xếp và chèn chúng vào đúng vị trí trong một mảng con đã sắp xếp, mảng con này sẽ lớn dần sau mỗi lần lặp.

Câu 2: Trong thuật toán sắp xếp chèn, có bao nhiêu phép so sánh trong trường hợp tốt nhất (khi mảng đã được sắp xếp)?

A. 0

B. n−1n-1n−1

C. n(n−1)2\frac{n(n-1)}{2}2n(n−1)​

D. n2n^2n2

Đáp án: B

Giải thích: Trong trường hợp tốt nhất, mỗi phần tử chỉ cần so sánh một lần với phần tử đứng trước nó, do đó số phép so sánh là n−1n-1n−1.

Câu 3: Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán sắp xếp chèn là gì?

A. O(n)

B. O(n \log n)

C. O(n^2)

D. O(1

Đáp án: C

Giải thích: Trong trường hợp xấu nhất (khi mảng được sắp xếp ngược), mỗi phần tử cần được so sánh với tất cả các phần tử trước nó, dẫn đến số lượng phép so sánh là bậc hai (O(n^2)).

Câu 4: Trong thuật toán sắp xếp chọn, điều gì xảy ra trong mỗi lần lặp?

A. Phần tử lớn nhất được chuyển về cuối mảng.

B. Phần tử nhỏ nhất được đưa vào đúng vị trí.

C. Mỗi phần tử được chèn vào đúng vị trí của nó.

D. Các phần tử liền kề được hoán đổi để sắp xếp.

Đáp án: B

Giải thích: Trong mỗi lần lặp của thuật toán sắp xếp chọn, thuật toán chọn phần tử nhỏ nhất trong phần chưa sắp xếp và đặt nó vào đúng vị trí của nó.

Câu 5: Độ phức tạp thời gian trong trường hợp tốt nhất của thuật toán sắp xếp chọn là gì?

A. O(n)

B. O(n^2)

C. O(n \log n)

D. O(1)

Đáp án: B

Giải thích: Thuật toán sắp xếp chọn luôn thực hiện O(n^2) phép so sánh, bất kể dữ liệu ban đầu được sắp xếp như thế nào, do đó độ phức tạp thời gian trong trường hợp tốt nhất là O(n^2).

Câu 6: Thuật toán nào sau đây không sử dụng so sánh giữa các phần tử?

A. Sắp xếp chèn

B. Sắp xếp chọn

C. Sắp xếp đếm

D. Sắp xếp nổi bọt

Đáp án: C

Giải thích: Sắp xếp đếm là một thuật toán sắp xếp không dựa trên việc so sánh các phần tử, mà dựa trên việc đếm số lần xuất hiện của mỗi phần tử trong một phạm vi.

Câu 7: Mục đích của vòng lặp bên trong trong thuật toán sắp xếp nổi bọt là gì?

A. Tìm phần tử lớn nhất và đưa nó về đúng vị trí.

B. Tìm phần tử nhỏ nhất và đưa nó về đúng vị trí.

C. So sánh và hoán đổi các phần tử liền kề nếu chúng không đúng thứ tự.

D. Chia mảng thành các phần nhỏ hơn để sắp xếp.

Đáp án: C

Giải thích: Trong sắp xếp nổi bọt, vòng lặp bên trong so sánh các phần tử liền kề và hoán đổi chúng nếu chúng không đúng thứ tự, điều này làm cho phần tử lớn nhất trong phần chưa sắp xếp "nổi" lên cuối mảng

Câu 8: Trường hợp tốt nhất của thuật toán sắp xếp nổi bọt là gì?

A. Mảng được sắp xếp ngược lại.

B. Mảng đã được sắp xếp.

C. Mảng chứa tất cả các phần tử giống nhau.

D. Mảng chỉ có hai phần tử.

Đáp án: B

Giải thích: Trường hợp tốt nhất của sắp xếp nổi bọt là khi mảng đã được sắp xếp, khi đó chỉ cần một lần duyệt qua với không cần hoán đổi, dẫn đến độ phức tạp thời gian O(n).

Câu 9: Phát biểu nào sai về thuật toán sắp xếp nổi bọt?

A. Nó là thuật toán ổn định, có nghĩa là nó giữ nguyên thứ tự của các phần tử bằng nhau.

B. Nó là thuật toán tại chỗ, tức là nó sử dụng bộ nhớ phụ không đáng kể.

C. Nó luôn thực hiện số lượng so sánh giống nhau, bất kể thứ tự của đầu vào.

D. Độ phức tạp thời gian xấu nhất của nó là O(n^2).

Đáp án: C

Giải thích: Số lượng so sánh trong sắp xếp nổi bọt có thể thay đổi tùy thuộc vào mức độ sắp xếp của mảng đầu vào. Trong trường hợp tốt nhất, ít so sánh hơn so với trường hợp xấu nhất.

Câu 10: Trong thuật toán sắp xếp chèn, thuật toán xác định vị trí để chèn phần tử như thế nào trong mỗi lần lặp?

A. Bằng cách tìm phần tử ở giữa và chèn vào đó.

B. Bằng cách dịch chuyển các phần tử lớn hơn phần tử hiện tại sang bên phải.

C. Bằng cách hoán đổi các phần tử liền kề cho đến khi phần tử hiện tại ở đúng vị trí.

D. Bằng cách chia mảng ra đệ quy.

Đáp án: B

Giải thích: Thuật toán sắp xếp chèn chèn phần tử hiện tại vào đúng vị trí của nó bằng cách dịch chuyển các phần tử lớn hơn nó sang bên phải, tạo ra khoảng trống để chèn.

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: Cho dãy A = [5, 8, 1, 0, 10, 4, 3], thuật toán sắp xếp chèn sẽ hoạt động như thế nào?

a) Sắp xếp từng phần tử vào vị trí đúng trong dãy con đã sắp xếp.

b) Đổi chỗ phần tử nhỏ nhất trong dãy còn lại với phần tử đang xét.

c) Kiểm tra từng cặp phần tử liền kề và đổi chỗ nếu không đúng thứ tự.

d) So sánh từng phần tử và hoán đổi nếu chúng không đúng vị trí.

a) Đúng. Đây chính là cách hoạt động của thuật toán sắp xếp chèn. Sau mỗi vòng lặp, phần tử đang xét sẽ được chèn vào vị trí đúng trong dãy con đã sắp xếp, từ trái sang phải.

b) Sai. Đây là mô tả của thuật toán sắp xếp chọn, không phải sắp xếp chèn.

c) Sai. Đây là cách hoạt động của thuật toán sắp xếp nổi bọt, không phải sắp xếp chèn.

d) Sai. Mô tả này không phản ánh đúng thuật toán sắp xếp chèn, mà là mô tả một cách khác, giống như thuật toán sắp xếp nổi bọt.

Câu 2: Trong thuật toán sắp xếp chọn, điều gì sẽ xảy ra ở mỗi bước lặp?

a) Tìm phần tử lớn nhất trong dãy chưa sắp xếp và đổi chỗ với phần tử cuối cùng.

b) Tìm phần tử nhỏ nhất trong dãy chưa sắp xếp và đổi chỗ với phần tử đang xét.

c) So sánh từng cặp phần tử liền kề và đổi chỗ nếu cần thiết.

d) Chèn phần tử đang xét vào vị trí đúng trong dãy con đã sắp xếp.

a) Sai. Thuật toán sắp xếp chọn tìm phần tử nhỏ nhất trong dãy chưa sắp xếp, không phải phần tử lớn nhất.

b) Đúng. Đây chính là ý tưởng chính của thuật toán sắp xếp chọn, tìm phần tử nhỏ nhất trong dãy còn lại và đổi chỗ với phần tử hiện tại.

c) Sai. Đây là cách hoạt động của thuật toán sắp xếp nổi bọt, không phải sắp xếp chọn.

d) Sai. Đây là mô tả của thuật toán sắp xếp chèn, không phải sắp xếp chọn.

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: Nếu dãy ban đầu đã được sắp xếp, thuật toán sắp xếp chèn sẽ thực hiện như thế nào?

Đáp án: Nếu dãy đã được sắp xếp, thuật toán sắp xếp chèn vẫn thực hiện tất cả các bước lặp, nhưng không có sự hoán đổi nào xảy ra.

Giải thích: Thuật toán sắp xếp chèn kiểm tra mỗi phần tử từ trái sang phải và chèn nó vào vị trí đúng trong dãy con đã được sắp xếp. Nếu dãy đã sắp xếp, tất cả các phần tử đều ở vị trí đúng của nó, do đó không cần hoán đổi, nhưng các bước kiểm tra vẫn được thực hiện.

Câu 2: Tại mỗi bước của thuật toán sắp xếp chọn, phần tử nào sẽ được đổi chỗ?

Đáp án: Phần tử nhỏ nhất trong đoạn chưa được sắp xếp sẽ được đổi chỗ với phần tử đầu tiên của đoạn đó.

Giải thích: Thuật toán sắp xếp chọn tìm phần tử nhỏ nhất trong đoạn chưa sắp xếp và hoán đổi nó với phần tử đầu tiên của đoạn đó. Sau mỗi bước, phần tử nhỏ nhất sẽ ở đúng vị trí và đoạn chưa sắp xếp sẽ giảm đi một phần tử.

Câu 3: Trong thuật toán sắp xếp nổi bọt, sau mỗi vòng lặp, điều gì xảy ra với các phần tử?

Đáp án: Sau mỗi vòng lặp, phần tử lớn nhất trong đoạn chưa sắp xếp sẽ được đưa về cuối dãy.

Giải thích: Thuật toán sắp xếp nổi bọt hoạt động bằng cách so sánh từng cặp phần tử liền kề và hoán đổi chúng nếu cần thiết. Sau mỗi vòng lặp, phần tử lớn nhất "nổi" lên và được đặt đúng vị trí ở cuối dãy. Quá trình này tiếp tục cho đến khi dãy được sắp xếp hoàn toàn.

Xem thêm các bài lý thuyết Tin học 11 sách Kết nối tri thức hay, chi tiết tại:

Lý thuyết Bài 23: Kiểm thử và đánh giá chương trình

Lý thuyết Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Lý thuyết Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình

Lý thuyết Bài 28: Thiết kế chương trình theo Mô đun

Lý thuyết Bài 30: Thiết lập thư viện cho chương trình

Xem thêm tài liệu Tin học lớp 11:

Giải Tin học 11 Bài 21: Các thuật toán sắp xếp đơn giản

Giải SBT Tin học 11 Bài 21: Các thuật toán sắp xếp đơn giản

1 8,927 08/08/2026


Xem thêm các chương trình khác: