IV. RÚT KINH NGHIỆM, BỔ SUNG:
H. Hãy xác định bài toán?
Đ. + Input: N, a1, a2, …, aN, k
+ Output: i hoặc thông báo không có i
• Cho các nhóm trình bày ý tưởng.
• GV hướng dẫn HS tìm thuật toán giải bài toán.
• GV hướng dẫn HS trình bày thuật toán tìm kiếm bằng cách liệt kê.
• Các nhóm thảo luận và đưa ra thuật toán.
• i là biến chỉ số và nhận giá trị nguyên lần lượt từ 1 đến N+1.
- B1: Nhập N, các số hạng a1, a2, …, aN và khoá k;
- B2: i ¬ 1;
- B3: Nếu ai = k thì thông báo chỉ số i, kết thúc;
- B4: i ¬ i + 1;
- B5: Nếu i >N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc.
- B6: Quay lại bước 3.
Hoạt động 2: Diễn tả thuật toán tìm kiếm bằng sơ đồ khối Sơ đồ khối:
Hoạt động 3: Mô phỏng việc thực hiện thuật toán
Mô phỏng việc thực hiện thuật toán với:
+ N = 10, k = 2 A 5 7 1 4 2 9 8 11 25 51k = 2 vµ N = 10 i 1 2 3 4 5 - - - - -
Víi i = 5 th× a5 = 2.
Hoạt động 4: Hướng dẫn tìm thuật toán giải bài toán b) Thuật toán tìm kiếm nhị phân (Binary
Search)
• Xác định bài toán
- Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1, a2, …, aN và một số nguyên k - Output: Chỉ số i mà ai = k hoặc thông báo không có số hạng nào của dãy A có giá trị bằng k.
• Ý tưởng: Sử dụng tính chất dãy A là dãy tăng, ta tìm cách thu hẹp nhanh phạm vị tìm kiếm sau mỗi lần so sánh khoá với số hạng được chọn, ta chọn số hạng aGiữa ở " giữa dãy" để so sánh với k, trong đó Giưa = N2+1
. Khi đó: - Nếu aGiưa = k thì Giưa là chỉ số cần tìm.
- Nếu aGiưa> k thì do dãy A là dãy đã sắp xếp nên việc tìm kiếm tiếp theo chỉ xét trên dãy a1, a2, …, aGiưa-1 .
• Nhấn mạnh dãy A là một dãy tăng.