1. Trang chủ
  2. » Kỹ Năng Mềm

Giáo án môn Tin học 10 - Bài 4: Bài toán và thuật toán

8 13 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 137,97 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

+ ViÖc t×m kiÕm sÏ dõng nÕu t×m thÊy phần tử k đó trong dãy hoặc phạm vi t×m kiÕm b»ng rçng kh«ng cßn trang sách nào để tìm nữa.. đó nếu vẫn chưa tìm thấy..[r]

Trang 1

Bài 4: bài toán và thuật toán

(tiết 6)

 soạn: Nguyễn Thị Huê

SV lớp: SP Tin K40 Ngày soạn: 25/9/2008 Giáo viên

I Mục đích – Yêu cầu

- Hiểu và thực hiện 230 thuật toán tìm kiếm nhị phân

- Biết cách xây dựng thuật toán đó

- Hình thành kĩ năng  duy logic để giải quyết các bài toán và vấn đề trong thực tế

II Công tác chuẩn bị.

Giáo viên chuẩn bị bảng phụ mô tả sơ đồ khối thuật toán tìm kiếm nhị phân

III Nội dung

1 ổn định tổ chức lớp (1 phút)

Sĩ số: Vắng: Có phép: Không phép:

2 Kiểm tra bài cũ (6 phút)

* Câu hỏi: Cho dãy số nguyên sau và khoá k= 27, em hãy thực hiện thuật toán tìm kiếm tuần tự và 2T ra kết quả ) dạng mảng mô phỏng?

Dãy số: 7, 5, 23, 27, 17, 32, 1

* Đáp án:

Bảng mô phỏng:

-Ai = k

?

Sai Sai Sai Sai Đúng -

Trang 2

-Kết quả thực hiện thuật toán: Thông báo chỉ số cần tìm: i = 5.

3 Bài mới

gian

Đặt vấn đề: Bài toán tìm kiếm rất phổ

biến trong thực tế Ví dụ: tìm thuê bao

trong danh bạ điện thoại, tìm học sinh

trong danh sách, … Ta cũng có thể tìm

kiếm theo nhiều cách khác nhau ở tiết

.,0 các em đã 230 tìm hiểu về thuật

toán tìm kiếm tuần tự, tiếp theo chúng

ta cùng tìm hiểu một thuật toán tìm

kiếm nữa: tìm kiếm nhị phân

- Các em hãy mở SGK trang 42

Bài toán

Bài toán : “Dãy A gồm N số nguyên

khác nhau: a1,a2,…,aN 230 sắp xếp

tăng dần và số nguyên k Cần biết có

hay không chỉ số i (1<=i<=N) mà

ai=k Nếu có hãy cho biết chỉ số đó”

Em hãy xác định Input và Output của

bài toán?

Bài 4: Bài toán và thuật toán

(tiết 6)

3 Một số ví dụ về thuật toán

Ví dụ 3 (tiếp): Thuật tón tìm kiếm nhị phân

- Xác định:

+ Input: Dãy tăng gồm N số

nguyên khác nhau a 1 , a 2 ,…, a N

và số nguyên k;

+ Output: Chỉ số i mà a i =k hoặc thông báo không có số hạng nào

của dãy có giá trị bằng k;

- Em nào có thể mô tả ngắn gọn cách

mở trang sách của mình?

- Trả lời

Trang 3

Ngoài cách

làm

trong sách Nếu trang đó đúng là trang

42 thì thôi Nếu số trang đó nhỏ hơn

42 thì lại mở từ trang ,0 đó trở về

đầu sách,

đó trở về cuối sách

- Với cách làm đó của em thì có thực

hiện được trên cuốn vở viết bình

thường không?

- Việc tìm trang 42 cũng gần giống với

ý

phân Để xem ý

chúng ta sẽ cùng đi tìm hiểu

ý

Sử dụng tính chất của một dãy số tăng

Ta tìm cách thu hẹp phạm vi tìm kiếm

sau mỗi lần so sánh khoá k với phần tử

tìm kiếm Phần tử tìm kiếm

230 chọn là phần tử ở giữa

Với Giua=[(Dau+Cuoi)/2]; Dau và

Cuoi là chỉ số

đầu và cuối dãy tìm kiếm Ban đầu

khởi tạo Dau=1, Cuoi=N.

+ Đầu tiên, ta xét phần tử ở giữa, so

sánh với k Nếu đúng bằng k thì dừng.

+ Nếu phần tử giữa lớn hơn k, ta thực

hiện lại công việc tìm kiếm với các

phần tử từ đầu đến phần tử gần phần tử

- Trả lời: Cách đó không thể làm với quyển vở bình

không đánh số trang

- Ghi bài:

Sử dụng tính chất dãy A tăng

So sánh aGiua với k Với Giua 

[(Dau + Cuoi)/2] Dau  1, Cuoi  N.

+ Nếu aGiua = k thì Giua là chỉ số cần tìm, kết thúc tìm kiếm

+ Nếu aGiua > k thì tìm kiếm tiếp

trên dãy a 1 , a 2 ,…, a Giua-1

+ Nếu aGiua < k thì tìm kiếm tiếp

trên dãy a Giua +1 , a Giua+2 , …, a N

+ Quá trình kết thúc khi tìm thấy chỉ số i sao cho ai = k hoặc phạm

vi tìm kiếm bằng rỗng

Trang 4

giữa nhất (tìm ở phần đầu cuốn sách).

+ Nếu phần tử giữa nhỏ hơn k thì thực

hiện lại việc tìm kiếm với các phần tử

từ phần tử ngay sau phần tử giữa đến

phần tử cuối (tìm ở phần sau cuốn

sách)

+ Việc tìm kiếm sẽ dừng nếu tìm thấy

phần tử k đó trong dãy hoặc phạm vi

tìm kiếm bằng rỗng (không còn trang

sách nào để tìm nữa)

- Thuật toán 230 gọi là “Tìm kiếm

nhị phân” bởi ta thực hiện việc tìm

kiếm bằng cách chia dãy tìm kiếm

thành 2 dãy con (nhị phân), sau đó lại

tìm kiếm trên một trong hai dãy con

đó nếu vẫn 0T tìm thấy

- Từ ý

diễn thuật toán ở dạng liệt kê

(nêu lên các A0L:

- Quan sát và ghi bài

Bước 1: Nhập N, các phần tử a1 ,

a 2 ,…, a N và khoá k;

Bước 2: Dau1, CuoiN;

Bước 3:

Giua [(Dau+Cuoi)/2];

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ì

Cuoi Giua- 1, rồi chuyển đến

A0 7;

Bước 6: DauGiua+1;

Bước 7: Nếu Dau>Cuoi thì

thông báo dãy A không có phàn

tử nào có giá trị bằng k, rồi kết

Trang 5

Bước 8: Quay lại A0 3;

- VD 1: N=7, k=5 Dãy số: 2, 4, 5, 21,

43, 47, 52

+ Chọn Dau là phần tử đầu tiên: Dau

 1, và Cuoi là phần tử cuối cùng:

Cuoi  N (tức Cuoi = 7)

+ Xét phần tử ở giữa: Giua 

[(Dau+Cuoi)/2], tức Giua = 4; Thấy

aGiua=21 > k = 5 Thực hiện tìm kiếm

trong nửa đầu của dãy: CuoiGiua-1;

tức Cuoi=3;

+ Lại xét phần tử giữa:

Giua[(Dau+Cuoi)/2]; tức Giua = 2;

aGiua=4 < k = 5; Thực hiện tìm kiếm

trong nửa sau của dãy: DauGiua +

1; tức Dau=3

+ Xét tiếp phần tử ở giữa:

Giua[(Dau+Cuoi)/2]; tức Giua = 3;

aGiua=5 = k ; Thông báo ra chỉ số cần

tìm i=Giua=3 rồi kết thúc tìm kiếm

- ]T ra sơ đồ khối của thuật toán và

giải thích Đồng thời giải thích sự

A0 liệt kê

- Nhận xét: trong thuật toán, việc tìm

kiếm thực chất là lặp một số lần thao

tác:

+ Chọn phần tử ở giữa làm phần tử tìm

kiếm

Thông báo chỉ số cần tìm i=Giua=3

- Quan sát sơ đồ của giáo viên

a Giua 21 4 5

a Giua

và k

> < =

Lần duyệt

Trang 6

+ So sánh phần tử tìm kiếm với k.

+ Căn cứ vào kết quả so sánh để thu

hẹp phạm vi tìm kiếm hoặc kết luận đã

tì thấy (không tìm thấy)

-

- VD 2: N=8, k=23 Dãy số: 3, 5, 9,

12, 16, 17, 19, 24

Bảng mô phỏng

- Nghe giảng và ghi bài

Đ

Nhập N, a 1 , a 2 ,…, a N

k

Dau 1; CuoiN

a Giua = k

Giua  [(Dau+Cuoi)/2]

Đưa ra Giua

rồi kết thúc

a Giua > k

Cuoi  Giua-1

Dau Giua+1

Dau>Cuoi

Thông báo trong dãy

không có số hạng nào có

giá trị bằng k rồi kết thúc

Đ

Đ

S

S

S

Trang 7

sơ đồ hoặc các A0 liệt kê).

aGiua

và k

< < < >

Lần

duyệt

Nhận thấy rằng: Dau>Cuoi nên phạm

vi tìm kiếm bằng rỗng, thông báo:

không tìm thấy phần tử nào bằng 23

trong dãy

+ VD 3: N=5, k=36 Dãy số: 9, 10, 29,

36, 42

HS tự làm

GV nhận xét bài của HS

- Làm VD

IV Củng cố (1 phút)

- So với thuật toán tìm kiếm tuần tự, ở thuật toán tìm kiém nhị phân cần  ý: + Dãy số ban đầu là dãy tăng

+ Số lần duyệt ít hơn

- BTVN:

Học các cách biểu diễn bài toán tìm kiếm bằng liệt kê và bằng sơ đồ khối Mỗi học sinh lấy 2 ví dụ về dãy tăng dần và khoá k, sau đó mô phỏng thuật toán tìm kiếm nhị phân bằng bảng

Trang 8

V nhận xét của giáo viên hướng dẫn:

Ngày đăng: 02/04/2021, 23:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w