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

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

20 76 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 20
Dung lượng 454,22 KB

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

Nội dung

Output: Chỉ số mà ai=k hoặc thông báo không có số hạng nào của A có giá trị bằng k... 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

Trang 1

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

Trang 2

Tìm kiếm là gì?

Tìm kiếm là việc thường xảy ra trong cuộc 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,

Trang 3

2.Bài toá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?

Trang 4

Thuật toán tìm kiếm tuần tự

Trang 5

3.Thuật toá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ố đó.

Các em hãy xác định Input và Output của bài toán Input:Dãy số A gồm N số nguyên khác nhau a1, a2, , aN và số nguyên k

Output: Chỉ số mà ai=k hoặc thông báo không có số hạng nào của A có giá trị bằng k

Trang 6

3.Thuật toá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 khoá

Trong trường hợp thứ hai dãy A không có số hạng nào bằng khoá

Trang 7

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

Cách liệt kê

B1: Nhập N, các số hạng a1, 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

Trang 8

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

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

Trang 9

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

Sơ đồ khối

Trang 10

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?

Trang 11

Có 2 dãy sau:

Dãy A: 5, 7, 9, 3, 1, 10 Và

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?

Trang 12

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

Trang 13

4 Thuật toá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ố 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ố đó.

Các em hãy xác định Input và Output của bài toán Input:Dãy số A sắp xếp tang dần gồm N số nguyên khác nhau a1, a2, , aN và số nguyên k

Output: Chỉ số mà ai=k hoặc thông báo không có số hạng nào của A có giá trị bằng k

Trang 14

Ý 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 khoá 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 khoá k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng

4 Thuật toán tìm kiếm nhị phân

Trang 15

 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 toán tìm kiếm nhị phân

Trang 16

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 toán tìm kiếm nhị phân

Trang 18

VD: Cho dãy số 1, 3, 5, 7, 9, 10.

Sử dụng thuật toá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?

Trang 19

Bài về nhà

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

Trang 20

Thank you

Ngày đăng: 25/02/2021, 08:59

TỪ KHÓA LIÊN QUAN

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

w