BÀI 2 TÌM KI M NH PHÂNẾ Ị M Đ UỞ Ầ N u ph i tìm m t s ế ả ộ ố trong dãy đã s p x p theo ắ ế th t tăng d n ho c ứ ự ầ ặ gi m d n, em có cách nào ả ầ tìm nhanh h n tìm ki m ơ ế tu n t không?ầ ự Có 8 th[.]
BÀI 2 TÌM KIẾM NHỊ PHÂN MỞ ĐẦU Nếu phải tìm một số trong dãy đã sắp xếp theo thứ tự tăng dần hoặc giảm dần, em có cách nào tìm nhanh hơn tìm kiếm tuần tự khơng? HOẠT ĐỘNG Có 8 thẻ, mỗi thẻ ghi một số ngun trên đó. Tất cả các thẻ được sắp xếp thành dãy theo thứ tự khơng giảm của các số ghi trên đó và đặt sấp mặt ghi số xuống bàn để em khơng nhìn thấy. Cơ giáo đọc một số, gọi là X chẳng hạn. Cần trả lời câu hỏi: Có hay khơng một thẻ ghi số X? Hãy sử dụng ít nhất số lần lật một thẻ lên xem mà vẫn trả lời được câu hỏi. Bạn Thanh An cho rằng chỉ cần khơng q 3 lần lật thẻ là trả lời được. Em đồng ý với Thanh An khơng? Vì sao? Câu trả lời: Đồng ý với ý kiến bạn Thanh An cần chia đôi dần dãy số thứ tự tìm kiếm phạm vi phù hợp để tìm kết mà mong muốn cần lần tìm kết 1. Chia đơi dần để tìm kiếm một số trong dãy số đã sắp thứ tự Ý tưởng: chia đơi dần để tìm một số trong một dãy số Ví dụ 1: Tìm x = 44 trong dãy 8 phần tử đã sắp xếp thứ tự khơng giảm Minh họa các bước: a1 Xuất phát Bước 1 Bước 2 Bươc 3 a2 12 a3 18 a4 42 42 a5 44 44 44 44 a6 55 55 55 a7 67 67 a8 94 94 Mơ phỏng thuật tốn tìm kiếm nhị phân x = 44 a i a1 1 a2 12 a3 18 a4 42 a5 44 44 a6 55 Lượt thứ nhất: agiữa là a4 = 42; 42 44 vùng tìm kiếm thu hẹp trong phạm vi là a5 Lượt thứ ba: agiữa là a5 = 44; 44 = 44 = x Vậy số cần tìm là i = 5 a7 67 a8 94 Ví dụ 2: Tìm x = 21 trong dãy 10 phần tử đã sắp xếp thứ tự khơng giảm A 21 22 30 31 33 i 10 Lượt thứ nhất: agiữa là a5 = 9; 9 21 vùng tìm kiếm thu hẹp trong phạm vi từ a6 a7; Lượt thứ ba: agiữa là a6 = 21; 21= 21 Vậy số cần tìm là i = 6 ... 55 55 a7 67 67 a8 94 94 Mơ phỏng thuật tốn? ?tìm? ?kiếm? ?nhị? ?phân x = 44 a i a1 1 a2 12 a3 18 a4 42 a5 44 44 a6 55 Lượt thứ nhất: agiữa là a4 = 42; 42? ?