1. Trang chủ
  2. » Giáo án - Bài giảng

Thuat toan tim kiem nhi phan

11 838 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 918,5 KB

Nội dung

Kiểm tra bài cũNhắc lại ý tưởng của thuật toán tìm kiếm tuần tự?... BÀI TOÁN TÌM KiẾM NHỊ PHÂN2... Trả lời :Thời gian thực hiện tìm kiếm của thuật toán nhị phân nhanh hơn thuật toán tuầ

Trang 1

Lớp 10A8 Kính chào quý thầy cô giáo

đến dự giờ !

Trang 2

Kiểm tra bài cũ

Nhắc lại ý tưởng của thuật

toán tìm kiếm tuần tự?

Trang 3

Trả lời

Bài toán tìm kiếm:

• Input: Dãy A gồm N số hạng a1, a2, …, aN

và khóa k

Output: Vị trí của số hạng bằng k trong dãy

A hoặc thông báo không tìm thấy

• Ý tưởng: So sánh tuần tự ai với khóa k (với

1≤ i ≤ N), nếu ai = k thì đưa ra i hoặc thông báo không tìm thấy

Trang 4

BÀI TOÁN TÌM KiẾM NHỊ PHÂN

2 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à a i = k hoặc thông báo không tìm thấy k trong dãy A

Trang 5

Ý tưởng thuật toán tìm kiếm nhị phân: thu hẹp phạm vi tìm kiếm bằng cách so sánh

k với số hạng ở giữa dãy

Nếu k < a(N+1)/2

Tìm kiếm trong phạm vi này

Nếu k > a(N+1)/2

Tìm kiếm trong phạm vi này

Nếu k = a [(N+1)/2] thì thông báo chỉ số (N+1)/2

Trang 6

Tiếp tục: Xác định lại vị trí đầu, giữa, cuối trong dãy mới:

Dau = 6; Cuoi = 10

aGiua = a[(6+10)/2] = a8,

Xác định vị trí ở giữa – gọi là a Giua, nếu a Giua >

k thì tìm trong đoạn a 1  a Giua, ngược lại tìm trong đoạn a Giua a 10

Xác định aGiua như thế nào?

aGiua = a[(1+10)/2] = a5

Cho dãy A tăng a1, a2, …, a10 và k = 55

Làm thế nào để tìm ra vị trí của số hạng có giá trị bằng 55 nhanh nhất?

a1 a2 a3 a4 a5 a6 a7 a8 a9 a10

Tiếp tục: Xác định lại vị trí đầu, giữa, cuối trong dãy mới:

Dau = 9; Cuoi = 10; a Giua = a [(9+10)/2] = a 9

a 5 < k nên tìm k trong đoạn a 6  a 10

a 9 = k nên thông báo chỉ số Giua (=9), kết thúc

vì a8 < k nên tiếp tục tìm k trong đoạn a9, a10

Trang 7

A Giua > K?

Bước 1: Nhập N, các số hạng a1,

a2, , aN và khóa k

Bước 2: Dau 1 , Cuoi ← N

Bước 3: Giua [(Dau+ Cuoi)/2]

Bước 4: Nếu a Giua = k thì thông

báo chỉ số Giua, rồi kết thúc.

Bước 5: Nếu a Giua > k thì Cuoi =

Giua - 1, rồi chuyển đến bước 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ó số

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

Bước 8: Quay lại bước 3

Thuật

toán

Đưa ra Giua,

rồi kết thúc

Nhập N; dãy a 1 , ,a N ; K Dau 1 ; Cuoi N

Giua [ (Dau + Cuoi)/2 ]

A Giua = K?

Dau Giua + 1

Cuoi Giua -1

Thông báo K không

có trong dãy số

A, rồi kết thúc

Dau>Cuoi?

Sai Sai

Đúng Đúng

Trang 8

Thông báo K không có trong dãy số A, rồi kết thúc

Cuoi  Giua -1

A Giua = K?

Nhập N; dãy a1, ,aN ; K

Dau  1 ; Cuoi  N

Dau  Giua + 1

Sai

A Giua > K?

Dau>Cuoi?

Giua  [ (Dau + Cuoi)/2 ]

Đưa ra Giua

rồi kết thúc

Sai

Đúng

Đúng

Sai

Đúng

N = 10 K = 21

Giua Cuoi

7 6

21 22

Giua = 6

Giua

Cuoi Dau

Dau

Cuoi Dau

22

21 30 31 33

7

6 8 9 10

7

6 8 9 10 5

4 3

2 1

i

A 2 4 5 6 9 21 22 30 31 33

Giua

Trang 9

Thông báo K không có trong dãy số A, rồi kết thúc

Cuoi  Giua -1

A Giua = K?

Nhập N; dãy a1, ,aN ; K

Dau  1 ; Cuoi  N

Dau  Giua + 1

Sai

A Giua > K?

Dau>Cuoi?

Giua  [ (Dau + Cuoi)/2 ]

Đưa ra Giua

rồi kết thúc

Sai

Đúng

Đúng

Sai

Đúng

N = 10 K = 25

Giua Cuoi

7 6

21 22 Giua

Cuoi Dau

Dau

Cuoi Dau

22

21 30 31 33

7

6 8 9 10

7

6 8 9 10 5

4 3

2 1

i

A 2 4 5 6 9 21 22 30 31 33

Giua

7

22

Cuoi Dau

Giua = 7 Dau = 8

Trang 10

Trả lời :

Thời gian thực hiện tìm kiếm của thuật toán nhị phân nhanh hơn thuật toán tuần tự, hạn

chế đáng kể số lượng phép toán so sánh trong thuật toán.

2/ Hãy so sánh thời gian thực hiện giữa thuật

toán tìm kiếm tuần tự và tìm kiếm nhị phân

Trả lời :

Dãy đã cho phải là một dãy có thứ tự.

1/ Hãy cho biết điều kiện cần phải có để có thể

sử dụng thuật toán tìm kiếm nhị phân ?

a) Hãy mô phỏng việc thực hiện tìm kiếm nhị

phân, với khóa cần tìm k = 6 ?

3/ Cho dãy A = 3 6 7 9 11 14 18 20

CỦNG CỐ

a) Hãy mô phỏng việc thực hiện tìm kiếm nhị

phân, với khóa cần tìm k = 15 ?

Trang 11

Xin cảm ơn và tạm biệt

quý thầy cô giáo !

Ngày đăng: 18/07/2014, 05:00

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w