Dễ hiểu giải Tin học 7 cánh diều chủ đề F bài 2 Tìm kiếm nhị phân
Giải dễ hiểu chủ đề F bài 2 Tìm kiếm nhị phân. Trình bày rất dễ hiểu, nên tiếp thu Tin học 7 Cánh diều dễ dàng. Học sinh nắm được kiến thức và biết suy rộng ra các bài tương tự. Thêm 1 dạng giải mới để mở rộng tư duy. Danh mục các bài giải trình bày phía dưới
Nếu chưa hiểu - hãy xem: => Lời giải chi tiết ở đây
CHỦ ĐỀ F: BÀI 2 - TÌM KIẾM NHỊ PHÂN
MỞ ĐẦU
Câu 1: Nếu phải tìm một số trong dãy đã sắp xếp theo thứ tự tăng 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?
Giải nhanh:
Ta xem số đó ở khoảng nào trong dãy mà không sợ bỏ sót.
1. Chia đôi dần để tìm kiếm một số trong dãy số đã sắp thứ tự.
Câu 1: Có 8 thẻ, mỗi thẻ có ghi một số nguyên 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 Giải nhanh 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 thẻ lên xem mà vẫn Giải nhanh được câu hỏi. Bạn Thành An cho rằng chỉ cần không quá 3 lần lật thẻ là Giải nhanh được. Em đồng ý với Thành An không? Vì sao?
Giải nhanh:
Em đồng ý với Thành An vì dãy số đã được sắp xếp không giảm, ta chia đôi dãy số, loại bỏ nửa dãy chắc chắn không chứa phần tử cần tìm, chỉ tìm kiếm trong nửa dãy còn lại. Nửa còn lại ta làm tương tự như trước.
LUYỆN TẬP
Câu 1: Cho dãy số 5, 11, 18, 39, 41, 52, 63, 70. Hãy mô tả diễn biến từng bước tìm kiếm nhị phần để tìm kiếm x=60 trong dãy trên.
Có thể trình bày thông tin mô tả dưới dạng bảng như bài học.
Giải nhanh:
Tìm x = 60:
A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | |
Xuất phát | 5 | 11 | 18 | 39 | 41 | 52 | 63 | 70 |
Bước 1 | 39 | 52 | ||||||
Bước 2 | 52 |
- Chia đôi lần 1. Phạm vi tìm kiếm từ dãy A1 đến A8. Lấy A4 là số có vị trí giữa dãy. Vì x >A4 → chỉ cần tìm trong nửa sau của dãy (A5 đến A8).
- Chia đôi lần 2. Lấy A6 có vị trí giữa dãy. Vì x >A6 → chỉ cần tìm trong nửa sau của dãy. Phạm vi tìm kiếm từ A7 đến A8.
- Chia đôi lần 3. Lấy A7 có vị trị giữa dãy. Kết thúc thuật toán: Không tìm thấy x có trong dãy.
VẬN DỤNG
Câu 1: Em hãy mô tả cách tra cứu, tìm một từ trong từ điển. Có thể gọi cách tìm kiếm đó là áp dụng thuật tìm kiếm nhị phân không?
Giải nhanh:
Giả sử cuốn từ điển có khoảng 300 nghìn mục từ. Coi từ điển có 218 = 262144 mục từ. Sau một lần chia đôi, phạm vi tìm kiếm giảm đi một nửa. Nếu theo thuật toán tìm kiếm nhị phân, ta phải chia đôi 17 lần cho đến khi phạm vi kiếm là 20 = 1 mục từ mới tìm thấy. Nên có thể gọi đây là tìm kiếm nhị phân.
TỰ ĐÁNH GIÁ
Câu 1: Hãy mô tả quy trình chia đôi dần để thực hiện tìm kiếm nhị phân?
Giải nhanh:
- Khi bắt đầu thuật toán, lấy phần tử đứng giữa để so sánh với x.
- Nếu phần tử đó là x thì kết luận: Đã tìm thấy x và kết thúc thuật toán.
- Trái lại, ta có thể xác định được x chắc chắn không có trong nửa đầu hay nửa sau của dãy, từ đó xác định được phạm vi tìm kiếm.
- Tiếp theo, việc tìm x trong phạm vi tìm kiếm sẽ được lặp lại cho cho đến khi tìm thấy.
Câu 2: Theo em, có phải với bất cứ dãy số nào cũng có thể áp dụng được thuật toán tìm kiếm nhị phân không? Giải thích tại sao.
Giải nhanh:
Không phải vì tìm kiếm nhị phân chỉ áp dụng với dãy số đã được sắp xếp tăng dần hoặc giảm dần.
Nếu chưa hiểu - hãy xem: => Lời giải chi tiết ở đây
Bình luận