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