Tải bản đầy đủ (.pptx) (20 trang)

Bài giảng Tin học 10 Bài toán tìm kiếm

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 (425.93 KB, 20 trang )

Chào mừng các em
đến với bài học ngày hôm nay


Tìm kiếm là việc thường xảy ra trong cuộc

Tìm kiếm là gì?

sống, chẳng hạn cần tìm cuốn sách giáo khoa
Tin học 10 trên giá sách, cần tìm một học sinh
trong danh sách một lớp học,...


2.Bài tốn tìm kiếm
Cho dãy số A gồm các số: 5, 7, 1, 4, 2, 9, 8, 11, 25, 51

Với k=2 trong dãy trên số hạng thứ mấy có giá trị bằng k? Chỉ số i cần tìm là bao nhiêu?

Với k=6 trong dãy trên số hạng thứ mấy có giá trị bằng k? Chỉ số i cần tìm là bao nhiêu?


Thuật tốn tìm kiếm tuần tự


3.Thuật tốn tìm kiếm tuần tự
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ố đó.

Input:Dãy số A gồm N số nguyên khác nhau a 1, a2, .., aN và số nguyên k.
Các em hãy xác định Input và Output của bài toán
Output: Chỉ số mà a i=k hoặc thơng báo khơng có số hạng nào của A có giá trị bằng k.




3.Thuật tốn tìm kiếm tuần tự

Ý tưởng:
Tìm kiếm tuần tự được thực hiện một cách tự nhiên. 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á cho đến khi hoặc gặp một số hạng bằng khoá hoặc dãy đã được xét hết và
khơng có giá trị nào bằng khố.
Trong trường hợp thứ hai dãy A khơng có số hạng nào bằng khố.


3.Thuật tốn tìm kiếm tuần tự
Cách liệt kê
B1: Nhập N, các số hạng a 1, a2, ..., aN và khoá k;
B2: i  1;
B3: Nếu ai=k thì thơng báo chỉ số i, rồi kết thúc;
B4: i  i+1;
B5: 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
B6: Quay lại bước 3.


Thuật tốn dừng khi tìm thấy số hạng bằng khố hoặc khi xét hết dãy mà khơng có phần tử nào
bằng khoá.

Thuật toán sẽ dừng khi nào?


3.Thuật tốn tìm kiếm tuần tự
Sơ đồ khối



VD: Cho dãy số 7, 8, 3, 5, 6, 2.
Sử dụng thuật toán tuần tự kiểm tra xem số 3 có ở trong dãy khơng và nằm ở vị trí nào?


Có 2 dãy sau:
Dãy A:

5, 7, 9, 3, 1, 10

Dãy B:

1, 3, 5, 7, 9, 10



Các em cho biết sự khác nhau của 2 dãy trên?

Dãy B đã được sắp xếp
theo thứ tự tăng dần

Dãy B đã được sắp xếp thì cơ nên làm như thế nào để tìm số 9 nhanh nhất?


Thuật tốn tìm kiếm nhị phân


4. Thuật tốn tìm kiếm nhị phân

Cho dãy A sắp xếp tăng dần gồm N số nguyên khác nhau a1,a2,...,aN và một số ngun 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ố đó.

Input:Dãy số A sắp xếp tang dần gồm N số nguyên khác nhau a 1, a2, .., aN và số nguyên k.
Các em hãy xác định Input và Output của bài toán
Output: Chỉ số mà a i=k hoặc thơng báo khơng có số hạng nào của A có giá trị bằng k.


4. Thuật tốn tìm kiếm nhị phân
Ý 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 khố
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=
(N+1)/2.
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 a1, a2,...,
aGiua–1 (phạm vi tìm kiếm mới bằng khoảng một nửa phạm vi tìm kiếm trước đó). 
- Nếu aGiua < k thì thực hiện tìm kiếm trên dãy aGiua+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 khố k trong dãy A hoặc phạm vi tìm
kiếm bằng rỗng.


4. Thuật tốn tìm kiếm nhị phân
 Cách liệt kê
Bước 1. Nhập N, các số hạng a1, a2,..., aN 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ì đặ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 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.


4. Thuật tốn tìm kiếm nhị phân

Ghi chú: Tuỳ thuộc aGiua > k hoặc aGiua < k mà chỉ số đầu hoặc chỉ số cuối của dãy ở
bước tìm kiếm tiếp theo sẽ thay đổi. Để thực hiện điều đó, trong thuật toán chỉ sử dụng
các biến nguyên tương ứng Dau và Cuoi có giá trị khởi tạo Dau = 1 và Cuoi = N.


4. Thuật tốn tìm kiếm nhị phân


VD: Cho dãy số 1, 3, 5, 7, 9, 10.
Sử dụng thuật tốn tìm kiếm nhị phân kiểm tra xem số 9 có ở trong dãy khơng và nằm ở vị trí
nào?


Bài về nhà
Làm bài 7 sách giáo khoa trang 44 và đọc trước thuật tốn tìm kiếm nhị phân


Thank you



×