Hãy xác định bài toán?

Một phần của tài liệu Tin 10_2cot(den tuan 31) (Trang 25 - 26)

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.

Một phần của tài liệu Tin 10_2cot(den tuan 31) (Trang 25 - 26)

Tải bản đầy đủ (DOC)

(95 trang)
w