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

tim kiem

18 168 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 18
Dung lượng 1,96 MB

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

Nội dung

TIẾT 13+14: THUẬT TOÁN TÌM KIẾM TUẦN TỰ VÀ TÌM KIẾM NHỊ PHÂN... TÌM KIẾM TUẦN TỰ Sequential Search Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đó với khóa cho đến khi gặp mộ

Trang 1

TIẾT 13+14: THUẬT TOÁN TÌM KIẾM TUẦN TỰ VÀ TÌM KIẾM NHỊ PHÂN

Trang 2

Tớ là một chú cá Hãy tìm tớ trong

đám bạn này nhé!!

Không phải

Ồ! Không phải nữa rồi! Ồ! Lại sai nữa rồi!

Hi! Hi! Chưa đúng đâu nghen!

A! Ha! Tìm ra rồi!

Trang 3

XÁC ĐỊNH BÀI TOÁN

OUPUT

INPUT Dãy A gồm N số nguyên khác nhau a 1 ,a 2 ,…,a N và số

nguyên k

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

TÌM KIẾM TUẦN TỰ (Sequential Search)

Trang 4

TÌM KIẾM TUẦN TỰ (Sequential Search)

Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đó với khóa cho đến khi gặp một số hạng bằng khóa thì

số hạng đó là số hạng cần tìm.

Trong trường hợp thứ hai, dãy không

có số hạng nào bằng khóa.

Trang 5

TÌM KIẾM TUẦN TỰ

Ví dụ:

Dãy A gồm các số

a1 a2 a3 a4 a5 a6 a7 a8

N=8

K=9

9

||

k

Tìm thấy

K=6 , không có giá trị nào

6

||

k

Không tìm

thấy

Trang 6

Ví dụ thuật toán tìm kiếm tuần tự

9

a5

4

a6

2

a3

8

a7 7

a1

3

a2

6

a4 4

k

i

n

4

i = 6

Trang 7

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

SƠ ĐỒ KHỐI

B1 Nhập N, a1,a2,…aN,

khóa 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.

LIỆT KÊ

Nhập N, a 1 ,a 2 ….,a N ,k

i1

a i =k Đưa ra i rồi

kết thúc

ii+1

i>N?

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

Đúng Sai

Đúng Sai

Trang 8

Nhập N, a 1 ,…,a N ,k

ai = k

i > N

Đưa ra i rồi kềt thúc

SAI

ĐÚNG

i  i + 1

i  1

i = 2 i = 3 i = 4

i = 1

SAI

Với i = 4 thì a 4 = 2

N = 6; k = 2

a 1 = 5

i = 2 < N

a 2 = 7

i = 3 < N

a 3 = 1

i = 4 < N

a 4 = 2

a 1 a 2 a 3 a 4 a 5 a 6

Ví dụ

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

Trang 9

Em có suy nhận xét gì sau khi xem

xong?

• Người đọc sách muốn tìm trang 30 của quyển

sách.

• Người ấy bắt đầu mở chính giữa quyển sách

• Số trang vừa mở được là trang 44.(chưa tìm đúng

số trang cần tìm)

• Như vậy người ấy chỉ tìm trong phạm vi từ số

trang từ đầu cho đến trang 44 (không cần tìm phần sau trang 44 )

• Tiếp tục phân đôi số trang từ trang đầu cho đến trang 44 Trang tìm được là trang 22, cứ tiếp tục như vậy cho đến khi tìm được trang 30

Trang 10

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

(dãy A tăng)

OUPUT

INPUT Dãy A tăng gồm N số nguyên khác nhau a 1 ,a 2 ,…,a N và

số nguyên k

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

Xác định bài toán

Trang 11

Ý tưởng

aGiữa=k aGiữa<k

Chọn aGiữa ở giữa dãy để so sánh với k, trong đó Giữa=

Giữa là chỉ số cần tìm Kết thúc

Tìm kiến trên dãy

aGiữa+1,,,aN





 +

2

1

N

aGiữa>k

Việc tìm kiếm

chỉ xét trên dãy

a1,…,aGiữa-1

Quá trình lặp lại cho đến khi hoặc tìm thấy k hoặc vi phạm tìm kiếm bằng rỗng

Trang 12

150 84

6

75

9 8

7 5

4 3

2 1

i

38 15

7 2

A

Biểu diễn thuật toán :

k = 150

vùng tìm kiếm thu hẹp trong phạm vi từ a6 a9

Cuoi = 9

151 90

Lượt thứ hai: aGiua là a7 = 90 < 150

vùng tìm kiếm thu hẹp trong phạm vi từ a8 a9

Dau = 8

a là a = 150 = k

Trang 13

50

11 30

6

9

10 9

8 7

5 4

3 2

1

i

8 6

5 1

A

k = 14

vùng tìm kiếm thu hẹp trong phạm vi từ a6 a10

Lượt thứ hai: agiữa là a8 = 39; 39 > 14

vùng tìm kiếm thu hẹp trong phạm vi từ a6 a7;

vùng tìm kiếm thu hẹp chỉ còn a7;

Lượt thứ tư: agiữa là a 7 = 30 > 14

Cuối=Giửa - 1 = 6 > đầu = 7

Thông báo không tìm thấy số hạng có giá trị bằng 14.

Trang 14

Thuật toán liệt kê





2

Cuoi Dau

k;

báo chỉ số Giữa rồi kết

thúc;

Cuoi=Giua-1, rồi

chuyển đến bước 7

thông báo dãy A

không có số hạng có

LIỆT KÊ

Chọn aGiữa ở giữa dãy để so sánh với k, trong đó Giữa=





 +

2

1

N

aGiữa=k

Giữa là chỉ số cần tìm Kết thúc

aGiữa>k

Việc tìm kiếm chỉ xét trên dãy

a1,a2,…,aGiữa-1

aGiữa<k

Tìm kiến trên dãy

aGiữa+1,aGiữa+2,

…,aN

Trang 15

SƠ ĐỒ KHỐI

Nhập N và a1,a2, ,aN;k

Dau1;Cuoi1

Giua[(Dau+Cuoi)]/2

aGiua=k?

Dua ra Giua roi

ket thuc

aGiua>k CuoiGiua-1

DauGiua+1 Dau>Cuoi?

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

Đúng

Đúng

Đúng Sai

B1 Nhập N, a1,a2,…aN, khóa k;

B2 Dau1, CuoiN;

B3 Giữa [(Dau+Cuoi)]/2

B4 Nếu aGiữa=k

thì thông báo chỉ

số Giữa rồi kết

thúc;

B5 Nếu aGiữa>k thì đặt Cuoi=Giua-1, rồi chuyển đến bước 7

B6 DauGiua+1;

B7 Nếu Dau>Cuoi thì thông báo dãy A không

có số hạng có gíá trị bằng k rồi kết thúc

B8 Quay lại B3

Trang 16

Nhập N và a 1 ,a 2 , ,a N ;k

Dau1;CuoiN

Giua[(Dau+Cuoi)]/2

a Giua =k?

Dua ra Giua roi

ket thuc

a Giua >k CuoiGiua-1

DauGiua+1 Dau>Cuoi?

Đúng

Đúng

Đúng Sai

SƠ ĐỒ KHỐI

A 2 4 5 6 9 21 22 30 31 Dau

Cuoi Giua

a Giua Lan Duyet

1 9 5 9

6

7 9

22

6 6

6 21

1 2 3

Trang 17

17

Trang 18

Kết thúc bài

học

Ngày đăng: 01/02/2015, 17:00

Xem thêm

HÌNH ẢNH LIÊN QUAN

SƠ ĐỒ KHỐI - tim kiem
SƠ ĐỒ KHỐI (Trang 7)
SƠ ĐỒ KHỐI Nhập N và a1,a2,..,aN;k - tim kiem
h ập N và a1,a2,..,aN;k (Trang 15)
SƠ ĐỒ KHỐI - tim kiem
SƠ ĐỒ KHỐI (Trang 16)
w