Số nguyên K được gọi là khoá tìm kiếm.. gọi tắt là khoá Làm thế nào để giải được bài toán này nhỉ?. Các em cần xây dựng thuật toán tìm kiếm tuần tự để giải bài toán này 1.. ý tưởng: Lầ
Trang 1NỘI DUNG
TIếT CT: 14
Hai bạn chó (Bi và Bông) chơi trốn tìm, Bông đã trốn vào
Bông trốn
đâu nhỉ ?
C1: Tìm kiếm tuần tự
( mở từng mũ)
C2: Do các mũ đã sắp xếp lớn
dần, hai mũ đầu nhỏ hơn
người của Bông nên chỉ tìm
hai mũ sau thôi!
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
Trang 2NỘI DUNG
Gv:
TIếT CT: 14
Xét bài toán tìm kiếm đơn giản:
Cho dãy A gồm N số nguyên khác nhau: a1, a2, , aN và một 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ố đó.
Số nguyên K được gọi là khoá tìm kiếm (gọi tắt là khoá)
Làm thế nào
để giải được bài toán này
nhỉ ?
Có 2 cách ư chọn cách nào đây ?
Các em cần xây dựng thuật toán tìm kiếm tuần tự
để giải bài toán này
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
bACK
Trang 3NỘI DUNG
TIếT CT: 14
Chỉ số i mà ai = k (1 ≤ i ≤ N) hoặc thông báo không có số hạng nào của A bằng k.
Dãy A gồm N số nguyên khác nhau a1, a2, , …
aN và số nguyên k.
INPUT:
OUTPUT:
1 Xác định bài toán:
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
Trang 4NỘI DUNG
Gv:
TIếT CT: 14
2 ý tưởng:
Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khoá (k) cho đến khi có sự trùng nhau, nếu đã xét tới số hạng cuối cùng mà không có sự trùng nhau thì có nghĩa là dãy A không có số hạng nào có giá trị bằng k
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
BTVN
Trang 5NỘI DUNG
TIếT CT: 14
Cách 1 : Liệt kê các bước
Bước 1: Nhập N, các số hạng a1, a2, , a … N
và giá trị khoá k;
Bước 2: i ← 1;
Bước 3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc;
Bước 4: i ← i+1;
Bước 5: 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;
Bước 6: Quay lại B3.
3 Thuật toán:
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
Trang 6NỘI DUNG
Gv:
TIếT CT: 14
Nhập N, a 1 , a 2 , , a N
và k
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
i ← 1
a i =
k ?
Đưa ra i rồi kết thúc
Đ
S
Đ
i ←i + 1
i >
N ?
Vẽ sơ đồ khối
3 2
1 i
13 21
6 8
9 5
A
S
Moõ phoỷng thuaọt toaựn: K = 8 vaứ daừy
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
Trang 7NỘI DUNG
TIếT CT: 14
1 XáC ĐịNH BàI TOáN
; , ,
, 2
a
- Output : Chỉ số i mà a i = k
hoặc thông
giá trị bằng k.
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
-Input : Một số nguyên k và d y A là ã d y tăng ã
gồm N số nguyên đôi một khác nhau:
Trang 8NỘI DUNG
Gv:
TIếT CT: 14
7
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Tìm thấy tại vị
trí thứ 7
Trang 9NỘI DUNG
TIếT CT: 14
7
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Tìm thấy tại vị
trí thứ 3
Trang 10NỘI DUNG
Gv:
TIếT CT: 14
Do d y A là ã d y tăng ã , ta thu hẹp nhanh phạm vi tìm kiếm sau mỗi lần so sánh khoá k với số hạng được chọn Muốn vậy, ta chọn số hạng aGiữa ở "giữa d y" để so sánh với ã k .
Trong đó: Giữa
2 ý tưởng
Khi đó, chỉ xảy ra một trong ba trường hợp sau:
Nếu aGiữa = k thì Giữa là chỉ số cần tìm Kết thúc.
Nếu aGiữa > k thì tìm kiếm trên d y ã a1, a2, , aGiữa - 1
Nếu aGiữa < k thì tìm kiếm trên d y ã aGiữa+1, aGiữa+2, , aN
+
=
2
1
N
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 A hoặc ã phạm vi tìm kiếm
(A): a1, a2, a3, a4, a5, a6, a7, a8, a9
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Trang 11NỘI DUNG
TIếT CT: 14
Câu hỏi : Làm thế nào để tìm được số hạng
(A): a1, a2, a3, a4, a5, a6, a7, a8, a9
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
ợc chỉ số Giữa của d y đang xét ã
Muốn tìm được chỉ số Giữa , ta cần có 2 biến chỉ số: Đầu (Đầu d y) và ã Cuối (Cuối d y), khi đó: ã
Trang 12NỘI DUNG
Gv:
TIếT CT: 14
THảO LUậN NHóM
Yêu cầu : Dựa theo ý tưởng của thuật toán tìm kiếm nhị phân đ xét, các em h y ã ã trình bày các bư
ớc tìm số k trong d y số A sau: ã
1, 3, 4, 6, 7, 10, 15
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Trang 13NỘI DUNG
TIếT CT: 14
3 THUậT TOáN (Mô tả bằng sơ đồ khối)
Nhập N và a 1 , a 2 ,…, a N ; k
aGiữa = k?
Đưa ra Giữa rồi kết thúc
aGiữa > k?
Đầu > Cuối
Đầu 1; Cuối N
Giữa [(ẹaàu + Cuoỏi )/ 2]
Cuối Giữa - 1
Đầu Giữa + 1
S
S
S
(A): a1, a2, a3, a4, a5, a6, a7, a8, a9
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Trang 14NỘI DUNG
Gv:
TIếT CT: 14
Đầu = 1 Cuối = 8
3 THUậT TOáN (Mô tả bằng sơ đồ khối)
Nhập N và a 1 , a 2 ,…, a N ; k
aGiữa = k?
Đưa ra Giữa rồi kết thúc
aGiữa > k?
Đầu > Cuối
D y A ã không có
số hạng có giá trị bằng k
Kết thúc
Đầu 1; Cuối N
Giữa [(ẹaàu + Cuoỏi )/ 2]
Cuối Giữa - 1
Đầu Giữa + 1
S
S
Đ
S
VD : Tìm số k = 10 trong d y số A sau: ã
2, 3, 4, 6, 8, 9, 10, 12 ( N = 8 )
, 5 , 7
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Trang 15NỘI DUNG
TIếT CT: 14
BàI TậP Về NHà
* Bài 1 : Dùng thuật toán tìm kiếm nhị phân để tìm số k = 14
trong d y số A sau: ã
1, 3, 5, 7, 9, 10 , 12, 14, 16 ( N = 9 ) (Lưu ý: trình bày rõ các bước cùng với các chỉ số Đầu, Giữa, Cuối)
* Bài 2: H y so sánh những ưu điểm và nhược điểm của hai ã thuật toán tìm kiếm mà em đ được học? ( ã Tìm kiếm tuần tự
và tìm kiếm nhị phân )
1 Xác định BT
2 ý tưởng
Thảo luận
3 Thuật toán
Ví dụ
BTVN
Trang 16NỘI DUNG
Gv:
TIếT CT: 14
Nhóm 1 : Tìm số k = 6.
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
BTVN
Thảo luận
Cu i ố 7
Gi a ữ 4
a Gi a ữ 6
trong d y A ã
Trang 17NỘI DUNG
TIếT CT: 14
Nhóm 2 : Tìm số k = 3.
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
BTVN
Thảo luận
a Gi a ữ 6 3
Trang 18NỘI DUNG
Gv:
TIếT CT: 14
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
BTVN
Thảo luận
Nhóm 3 : Tìm số k = 15.
Kết quả : Tìm thấy số k = 15 tại vị trí thứ Giữa = 7
trong d y A ã
Trang 19NỘI DUNG
TIếT CT: 14
1 Xác định BT
2 ý tưởng
3 Thuật toán
Ví dụ
BTVN
Thảo luận
Nhóm 4 : Tìm số k = 13