Tải bản đầy đủ (.ppt) (11 trang)

Thuat toan tim kiem nhi phan

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (452.26 KB, 11 trang )


Lớp 10A8
Kính chào quý thầy cô giáo
đến dự giờ !

Kiểm tra bài cũ
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ự?

Trả lời
Trả lời
Bài toán tìm kiếm:

Input: Dãy A gồm N số hạng a
1
, a
2
, …, a
N

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ự a
i
với khóa k (với
1≤ i ≤ N), nếu a
i
= k thì đưa ra i hoặc thông


báo không tìm thấy

BÀI TOÁN TÌM KiẾM NHỊ PHÂN
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 a
1
, a
2
, , a
N
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

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

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
k với số hạng ở giữa dãy
a
1
, a
2
, …, a
(N+1)/2
, … a
N-1
, a
N
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
< a
(N+1)/2
> a
(N+1)/2

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

a
Giua
= a
[(6+10)/2]
= a
8
,
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 a
Giua
như thế nào?
a
Giua
= a
[(1+10)/2]
= a
5

Cho dãy A tăng a
Cho dãy A tăng a
1
1
, a
, a
2
2
, …, a
, …, a
10
10
và k = 55
và k = 55
22 40 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?
a
1
a
2
a
3
a
4
a
5
a
6
a
7

a
8
a
9
a
10

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
vì a
5
< k nên tìm k trong đoạn a
6
 a
10
vì 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

A
Giua
> K?
Bước 1: Nhập N, các số hạng a
1

,
a
2
, , a
N
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
Thuật
toán
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
Sai
Đúng





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
76
21 22

Giua = 6
Giua
CuoiDau
Dau
CuoiDau
2221 30 31 33
76 8 9
10
76 8 9
10
54321i
A 2221 30 31 3396542
Giua




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
76
21 22
Giua
Cuoi
Dau
Dau
CuoiDau
2221 30 31 33
76 8 9
10
76 8 9
10
54321i
A 2221 30 31 3396542
Giua
7
22
Cuoi

Dau
Giua = 7 Dau = 8

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Ố
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 ?

H
H


T
T
Xin cảm ơn và tạm biệt
quý thầy cô giáo !

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×