BÀI 16. THUẬT TOÁN SẮP XẾP

A. TÓM TẮT LÍ THUYẾT

B. BÀI TẬP VÀ THỰC HÀNH

16.1. Em hãy sắp xếp các bước sau đây theo đúng thứ tự để hoàn thành công việc hoán đổi chất lỏng đựng trong hai cốc A và B (sử dụng cốc C không đựng gì là cốc trung gian). 

a) Đỗ chất lỏng từ cốc B sang cốc A. 

b) Đỗ chất lỏng từ cốc C sang cốc B.

c) Đổ chất lỏng trong cốc A sang cốc C.

 => Đáp án: c, a, b

16.2. Hoán đổi vị trí hai phần tử liên tiếp khi chúng không đúng thứ tự là cách sắp xếp của thuật toán nào?

 A. Nổi bọt.                                           B. Chọn.

 => Đáp án:  A. Nổi bọt.      

16.3. Tìm phần tử nhỏ nhất trong dãy và đổi chỗ phần tử này với phần tử đầu tiên của dãy chưa được sắp xếp là ý tưởng của thuật toán nào?

A. Nổi bọt.                                             B. Chọn.

 => Đáp án:  B. Chọn.

16.4. Dùng thuật toán sắp xếp nổi bọt để sắp xếp một dãy số tăng dần. Mỗi vòng lặp sẽ duyệt các phần tử từ cuối danh sách đến đầu danh sách. Kết thúc vòng lặp thứ nhất, phần tử đầu tiên sẽ có giá trị:

A. Nhỏ nhất trong dãy số.

B. Lớn nhất trong dãy số.

C. Không thay đổi.

D. Bằng giá trị của phần tử liền trước.

 => Đáp án: A. Nhỏ nhất trong dãy số.

16.5. Sau vòng lặp thứ nhất của thuật toán sắp xếp chọn, phương án nào đúng?

A. Phần tử có giá trị nhỏ nhất trong dãy được tìm thấy và đổi chỗ cho phần tử đứng đầu dãy.

B. Phần tử có giá trị lớn nhất trong dãy được tìm thấy và đổi chỗ cho phần tử đứng đầu dãy.

C. Các phần tử liền kề được hoán đổi.

D. Phần tử có giá trị nhỏ nhất sẽ đổi vị trí cho phần tử cuối dãy.

=> Đáp án: A. Phần tử có giá trị nhỏ nhất trong dãy được tìm thấy và đổi chỗ cho phần tử đứng đầu dãy.

16.6. Các nhiệm vụ để thực hiện việc sắp xếp gồm:

A. So sánh.

B. Đổi chỗ. 

C. So sánh và đổi chỗ.

D. Đổi chỗ và xoá. 

=> Đáp án: C. So sánh và đổi chỗ.

16.7. Cho một dãy các quân bài như sau:

Các quân bài ban đầu Bạn An sắp xếp các quân bài bằng cách tráo đổi vị trí theo các vòng lặp như trong các hình sau: 

a) Em hãy cho biết bạn An dùng thuật toán nào để sắp xếp?

b) Em hãy mô phỏng lại thuật toán trên với các quân bài trong Hình 16.5

=> Đáp án:

a) An sắp xếp theo thuật toán sắp xếp nổi bọt.

b) Mô phỏng lại thuật toán sắp xếp nổi bọt với các quân bài:

Vòng lặp thứ nhất: So sánh quân 6 và quân 9, vì 9 > 6 không đúng thứ tự nên quân 6 đổi chỗ cho quân 9. So sánh quân 6 với quân 10, vì 10 >6 không đúng thứ tự nên quân 6 đổi chỗ cho quân 10. So sánh tiếp quân 6 với quân 4, vì 4 <6 đúng thứ tự nên giữ nguyên vị trí. Kết thúc vòng lặp thứ tự các quân bài như sau: Quân 4, quân 6, quân 10, quân 9.

Vòng lặp thứ hai: So sách quân 9 với quân 10, vì 10 > 9 không đúng tử tự nên quân 9 đổi chỗ cho quân 10. So sánh quân 9 với quân 6, vì 6 < 9 đúng thứ tự nên giữ nguyên vị trí. Kết thúc vòng lặp thứ tự các quân bài như sau: Quân 4, quân 6, quân 9, quân 10.

Vòng lặp thứ ba: So sánh quân 10 với quân 9, vì 9 < 10 đúng thứ tự nên giữ nguyên vị trí. Vậy dãy đã được sắp xếp. 

16.8. Nếu sử dụng thuật toán sắp xếp chọn để sắp xếp dãy số 8, 22, 7, 19, 5 theo thứ tự tăng dần thì số lần thực hiện thao tác hoán đổi giá trị trong vòng lặp thứ nhất là:

A. 2.                                B. 3.                                   C. 4.                                        D. 5.

=> Đáp án: A. 2.     

16.9. Cho dãy số sau: 15, 20, 10, 18.  Bạn Minh sử dụng thuật toán sắp xếp nổi bọt để sắp xếp dãy số tăng dần. Mỗi vòng lặp sẽ duyệt từ phần tử cuối đến phần tử đầu tiên. Em hãy chọn phương án mô tả đúng dãy số sắp xếp sau mỗi vòng lặp.

A. 15, 20, 10, 1810, 15, 18, 20→ 10, 15, 18, 20

B. 15, 20, 10, 18 → 10, 20, 15, 18→ 10, 15, 20, 18 → 10, 15, 18, 20.

C. 15, 20, 10, 18→ 15, 10, 20, 18→ 10, 15, 18, 20.

D. 15, 20, 10, 1810, 15, 20, 18→ 10, 15, 18, 20

=> Đáp án: D. 15, 20, 10, 1810, 15, 20, 18→ 10, 15, 18, 20

16.10. Em hãy dùng thuật toán sắp xếp nổi bọt sắp xếp dãy số dưới đây theo thứ tự tăng dần, mỗi vòng lặp duyệt tử phần tử cuối về đầu:  83, 5, 8, 12, 65, 72, 71.

=> Đáp án: 

Mô phỏng các bước sắp xếp dãy số 83, 5, 8, 12, 65, 72, 71 theo thuật toán nổi bọt:

83, 5, 8, 12, 65, 72, 71→ 5, 83, 8, 12, 65, 71, 72.

5, 83, 8, 12, 65, 71, 72→ 5, 8, 83, 12, 65, 71, 72. 5, 8, 83, 12, 65, 71, 725, 8, 12, 83, 65, 71, 72.

5, 8, 12, 83, 65, 71, 725, 8, 12, 65, 83, 71, 72.

5, 8, 12, 65, 83, 71, 725, 8, 12, 65, 71, 83, 72.

5, 8, 12, 65, 71, 83, 725, 8, 12, 65, 71, 72, 83.

Sau 6 vòng lặp thì dãy số mới được sắp xếp đúng theo yêu cầu. 

16.11. Em hãy quan sát Hình 16.6 và cho biết đó là cách sắp xếp theo thuật toán nào?

=> Đáp án: Thuật toán sắp xếp chọn. 

16.12. An và Khoa chơi trò chơi sắp xếp các que tính từ ngắn đến dài. Mỗi bạn có một cách sắp xếp khác nhau:

An: Tớ chọn que ngắn nhất rồi đổi vị trí với que ở vị trí đầu tiên. Tiếp tục chọn các que ngắn nhất trong các que chưa được xếp và sắp xếp chúng lần lượt vào các vị trí thứ hai, thứ ba,...

Khoa: Tớ cầm que cuối cùng, nếu que trước ngược lại nếu que trước dài hơn tớ sẽ đổi vị trí hai que tính. Lần lượt làm như vậy đến que tính đầu tiên. Sau lượt đầu, que tính ngắn nhất sẽ được đưa về vị trí đầu tiên. Ở lượt thứ hai, que tinh ngắn thứ hai sẽ được đưa đúng vào vị trí, cứ như vậy đến khi các que tính được sắp xếp theo đúng thứ tự. ngắn hơn tớ sẽ chuyển sang cầm que ngắn.

a) Em hãy cho biết bạn An và Khoa dùng thuật toán gì để sắp xếp?

b) Em hãy thực hiện theo cách của An và Khoa để sắp xếp các que tính trong Hình 16.7 theo thứ tự từ ngắn đến dài. Theo em, cách sắp xếp của bạn nào nhanh hơn?

 

=> Đáp án:

 a) An dùng thuật toán sắp xếp chọn, Khoa dùng thuật toán sắp xếp nổi bọt

b)

Vậy cách sắp xếp của An nhanh hơn cách sắp xếp của Khoa.

16.13. Em hãy sử dụng thuật toán sắp xếp chọn để sắp xếp bốn thành viên trong gia đình bạn Hải (bao gồm: bố, mẹ, Hải và em gái) (Hình 16.8) theo thứ tự tăng dần của chiều cao. 

=> Đáp án: 

 Vòng lặp thứ nhất: Em gái là người thấp nhất nên đổi chỗ em gái với bố. Thứ tự mới bây giờ là em gái, bố, mẹ, Hải.

Vòng lặp thứ hai: Hải là người thấp nhất trong dãy còn lại nên Hải đổi chỗ với bố. Thứ tự mới bây giờ là em gái, Hải, mẹ, bố.

Vòng lặp thứ ba: Mẹ ở đúng vị trí nên thứ tự sắp xếp đã đúng. 

16.14. Em hãy quan sát dãy gồm các số 10, 7, 3, 13, 2, 8, 5 được thay đổi vị trí theo từng bước như trong Hình 16.9.

 

a) Em hãy cho biết dãy số đã được sắp xếp theo thuật toán nào?

b) Em hãy sắp xếp dãy số ban đầu theo một thuật toán khác mà em đã được học. So sánh xem cách sắp xếp của thuật toán nào nhanh hơn?

 

=> Đáp án: 

a) Dãy số đã được sắp xếp theo thuật toán sắp xếp chọn.

b) Dãy số có thể sắp xếp theo thuật toán nổi bọt như sau:

Vậy sắp xếp theo thuật toán nổi bọt sẽ cần 5 vòng lặp, trong khi đó sắp xếp theo thuật toán chọn sẽ cần 8 vòng lặp. Vậy thuật toán nổi bọt trong trường hợp này nhanh hơn

16.15. Điểm môn Tin học của học sinh tổ một lớp 7A được ghi trong bảng sau:

Em hãy sắp xếp lại danh sách theo thứ tự tăng dần của điểm bằng cách dùng thuật toán sắp xếp nổi bọt và sắp xếp chọn

=> Đáp án:

Kết quả các vòng lặp thực hiện sắp xếp nổi bọt để sắp xếp điểm theo thứ tự tăng dần:

Kết quả các vòng lặp thực hiện sắp xếp chọn để sắp xếp điểm theo thứ tự tăng dẫn : 

Danh sách sẽ được sắp xếp lại như bảng sau: