Bài giảng Steam Tin học Lớp 7 - Chủ đề F: Giải quyết vấn đề với sự trợ giúp của máy tính một số thuật toán sắp xếp và tìm kiếm cơ bản - Bài 4: Sắp xếp nổi bọt

HOẠT ĐỘNG 1

Giả sử có một dãy hộp kẹo, mỗi hộp chứa một số kẹo nào đó. Có một chú robot chỉ biết làm hai thao tác:

- So sánh số kẹo trong hai hộp cạnh nhau

- Hoán đổi vị trí hai hộp kẹo cạnh nhau

  Theo em, chú robot phải làm thế nào để xếp lại các hộp sao cho số kẹo trong các hộp tăng dần?

Chú robot phải so sánh lần lượt các hộp kẹo cạnh nhau ở trong dãy, nếu hộp kẹo thứ nhất lớn hơn hộp kẹo thứ hai thì tiến hành hoán đổi vị trí hai hộp kẹo cạnh nhau. Robot cứ thức hiện lần lượt cho đến khi không đổi chỗ các hộp kẹo cạnh nhau nữa thì kết thúc công việc.

Ý tưởng sắp xếp bằng cách đổi chỗ các phần tử liền kề

- Ví dụ: Cho dãy 5 hộp kẹo với số lượng kẹo trong mỗi hộp khác nhau, tương ứng là:

- Giải thích:

+ Ở lượt thứ nhất, so sánh hai hộp đầu tiên, nếu số kẹo ở hộp đứng trước lớn hơn số kẹp ở hộp đứng sau thì đổi vị trí hai hộp này cho nhau. Tiếp tục như vậy cho đến hết dãy là hết một lượt => ta thu được hộp cuối là hộp chứa nhiều kẹo nhất

+ Tiếp tục các lượt thứ hai, thứ ba theo cách trên, cứ lặp lại như vậy cho đến khi gặp một lượt mà suốt cả lượt đó robot không phải đổi chỗ hai hộp nào thì dãy đã được sắp xếp xong.

pptx 18 trang Thanh Tú 03/06/2023 3420
Bạn đang xem tài liệu "Bài giảng Steam Tin học Lớp 7 - Chủ đề F: Giải quyết vấn đề với sự trợ giúp của máy tính một số thuật toán sắp xếp và tìm kiếm cơ bản - Bài 4: Sắp xếp nổi bọt", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pptxbai_giang_steam_tin_hoc_lop_7_chu_de_f_giai_quyet_van_de_voi.pptx

Nội dung text: Bài giảng Steam Tin học Lớp 7 - Chủ đề F: Giải quyết vấn đề với sự trợ giúp của máy tính một số thuật toán sắp xếp và tìm kiếm cơ bản - Bài 4: Sắp xếp nổi bọt

  1. BÀI 4 SẮP XẾP NỔI BỌT
  2. MỞ ĐẦU Làm thế nào để cho máy tính biết một dãy đã có thứ tự tăng dần?
  3. Để máy tính biết một dãy đã có thứ tự tăng dần, ta phải sắp xếp theo thứ tự để máy tính có thể nhận dạng.
  4. HOẠT ĐỘNG 1 Giả sử có một dãy hộp kẹo, mỗi hộp chứa một số kẹo nào đó. Có một chú robot chỉ biết làm hai thao tác: - So sánh số kẹo trong hai hộp cạnh nhau - Hoán đổi vị trí hai hộp kẹo cạnh nhau Theo em, chú robot phải làm thế nào để xếp lại các hộp sao cho số kẹo trong các hộp tăng dần?
  5. Chú robot phải so sánh lần lượt các hộp kẹo cạnh nhau ở trong dãy, nếu hộp kẹo thứ nhất lớn hơn hộp kẹo thứ hai thì tiến hành hoán đổi vị trí hai hộp kẹo cạnh nhau. Robot cứ thức hiện lần lượt cho đến khi không đổi chỗ các hộp kẹo cạnh nhau nữa thì kết thúc công việc.
  6. 1. Ý tưởng sắp xếp bằng cách đổi chỗ các phần tử liền kề - Ví dụ: Cho dãy 5 hộp kẹo với số lượng kẹo trong mỗi hộp khác nhau, tương ứng là: 5 1 4 2 8
  7. - Minh họa:
  8. - Giải thích: + Ở lượt thứ nhất, so sánh hai hộp đầu tiên, nếu số kẹo ở hộp đứng trước lớn hơn số kẹp ở hộp đứng sau thì đổi vị trí hai hộp này cho nhau. Tiếp tục như vậy cho đến hết dãy là hết một lượt => ta thu được hộp cuối là hộp chứa nhiều kẹo nhất + Tiếp tục các lượt thứ hai, thứ ba theo cách trên, cứ lặp lại như vậy cho đến khi gặp một lượt mà suốt cả lượt đó robot không phải đổi chỗ hai hộp nào thì dãy đã được sắp xếp xong.
  9. HOẠT ĐỘNG 2 Với dãy số đã cho ở ví dụ trên, em hãy thực hiện thuật toán được mô tả ở dưới và cho biết đó có phải là thuật toán sắp xếp nổi bọt hay không? Lặp khi (dãy chưa sắp xếp xong = đúng): a) Thực hiện một lượt so sánh các cặp phần tử liền kề và đổi chỗ khi trái thứ tự tăng dần b) Nếu trong lượt vừa thực hiện xong không có đổi chỗ: dãy chưa sắp xếp xong = sai Hết nhánh Hết lặp
  10. Thuật toán được mô tả như hình trên là thuật toán sắp xếp nổi bọt.
  11. 2. Thuật toán sắp xếp nổi bọt Ở mỗi lượt robot thực hiện - Xuất phát từ đầu dãy, i = 1, xét cặp (a1, a2), nếu a1 > a2 (trái thứ tự mong muốn) thì đổi chỗ cho nhau; trái lại không cần làm gì. - Dịch sang phải một vị trí, xét cặp (a2, a3); so sánh và đổi chỗ nếu cần - Quá trình tiếp tục, dịch sang phải một vị trí, xét cặp (ai+1, ai+2) so sánh và đổi chỗ nếu cần. - Khi hết dãy thì xong một lượt xét các cặp số kề nhau để đổi chỗ. Thực hiện nhiều lượt như trên cho đến khi không còn bất kì cặp liền kề (ai, ai+1) nào trái thứ tự mong muốn, ta được dãy đã sắp xếp.
  12. LUYỆN TẬP Bài 1. Hãy mô phỏng thuật toán sắp xếp nổi bọt cho một dãy số nguyên tùy chọn, không ít hơn 5 phần tử. Sau bao nhiêu lượt đi từ đầu đến cuối dãy để so sánh và đổi chỗ thì thuật toán kết thúc? Tổng số có bao nhiêu lần đổi chỗ hai phần tử liền kề?
  13. Gợi ý Ví dụ: Cho dãy số: 15, 1, 31, 9, 78, 42. Sau 2 lượt đi từ đầu đến cuối dãy để so sánh và đổi chỗ thì thuật toán kết thúc. Có 4 lần đổi chỗ hai phần từ liền kề.
  14. Bài 2. 1) 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ì? 2) Theo em, có phải hình bên đã mô tả chi tiết một lượt robot thực hiện so sánh các cặp phần tử liền kề và đổi chỗ khi chúng trái thứ tự mong muốn không? Lặp với i từ 1 đến n – 1: Nếu ai > ai+1: đổi chỗ ai cho ai+1 Hết nhánh Hết lặp
  15. Bài 3. Theo em, vì sao thuật toán sắp xếp trên lại có tên là sắp xếp nổi bọt?
  16. VẬN DỤNG Câu 1. Trong thuật toán sắp xếp nổi bọt, khi nào hai phần tử liền kề được đổi chỗ? Câu 2. Thuật toán sắp xếp nổi bọt kết thúc khi nào? Câu 3. Khi nào thực hiện thuật toán sắp xếp nổi bọt chỉ cần một lượt so sánh các cặp phần tử liền kề và đổi chỗ?