Và biế ni trong thuật toán

Một phần của tài liệu Giáo án tin 10 chương I-II (Trang 25 - 26)

3. Bài mới

Nội dung Hoạt động của thày và trò

Ví dụ 3: Bài toán tìm kiếm - Thuật toán tìm kiếm nhị phân (Binary Search) 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 aã ã 1, 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á rtị 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 vi tìm kiếm sau mỗi lần so sánh khoá với số hạng đợc chọn. Để làm điều đó, ta chọn số hạng agiua ở “giữa d y” để so sánh với k,ã

trong đó Giua =  +2 

1

N

. Khi đó, chỉ xảy ra một trong ba trờng hợp sau:

- Nếu aGiua = k thì Giua là chỉ số cần tìm. Việc tìm kiếm kết thúc.

- Nếu aGiua > k thì do d y A là d y đ đã ã ã ợc sắp xếp nên việc tìm kiếm tiếp theo chỉ xét trên d y aã 1, a2, … , aGiua.

- Nếu aGiua < k thì thực hiện tìm kiếm trên d y aã Giua+1, aGiua+2, …, aN.

Quá trình trên sẽ đợc lặp lại một số lần cho đến khi hoặc đ tìm thấy khoá k trong d y hoặc phạm vi tìm kiếmã ã

bằng rỗng.

Thuật toán:

a) Cách liệt kê:

ĐVĐ: Tìm kiếm là việc thờng xảy ra trong cuộc sống, chẳng hạn tìm số nhà trong d y phố, tìmã

ngời có mức lơng 2500000 trong bảng lơng … Vấn đề đặt ra là tìm nh thế nào cho nhanh chóng.

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

HS: Trả lời.

GV: H y nêu ý tã ởng về thuật toán? HS: Trả lời

GV: Hớng dẫn học sinh tìm hiểu ví dụ mô phỏng

Bớc 1. Nhập N, các số hạng a1, a2, … , aN và khóa k; Bớc 2. Đau ← 1, Cuoi ← N; Bớc 3. Giua ←  +2  Cuoi Dau ;

Bớc 4. Nếu aGiua = k thì thông báo chỉ số Giua, rồi kết thúc;

Bớc 5. Nếu aGiua > k thì đặt Cuoi = Giua - 1, ròi chuyển đến bớc 7;

Bớc 6. Dau ← Giua + 1;

Bớc 7. Nếu Dau > Cuoi thi thông báo d y A không có sốã (adsbygoogle = window.adsbygoogle || []).push({});

hạng có giá trị bằng k, rồi kết thúc;

Bớc 8. Quay lại bớc 3 ; b) Sơ đồ khối.

việc thực hiện thuật toán

+ Tìm kiếm nhị phân trong d y A đ đã ã ợc sắp xếp: 2, 4, 5, 6, 9, 21, 22, 30, 31, 33 với khoá k = 21.

+ Tìm kiếm nhị phân trong d y A đ đã ã ợc sắp xếp: 2, 4, 5, 6, 9, 21, 22, 30, 31, 33 với khoá k = 25.

- Sau khi học sinh đ nắm đã ợc cách làm, GV yêu cầu các HS hoặc cùng với các HS liệt kê các bớc của thuật toán.

GV: Ta nhận thấy, nếu agiua > k thì phạm vi tìm kiếm là ở nửa đầu của d y A, nếu aã giua < k thì phạm vi tìm kiếm ở nửa sau của d y A.ã

GV: Trình bày bảng sơ đồ thuật toán, giải thích rõ từng thao tác.

GV: Sau khi trình bày song bảng sơ đồ thuật toán sẽ xoá một số hớng mũi tên của thao tác và yêu cầu HS điền lại cho thích hợp.

HS: Lên bảng điền lại các hớng mũi tên đ bịã

xoá

Iv. củng cố và bài tập.

Một phần của tài liệu Giáo án tin 10 chương I-II (Trang 25 - 26)