1. Trang chủ
  2. » Công Nghệ Thông Tin

Thuật toán tìm kiếm kỹ thuật lập trình đại học KHTN

19 181 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 19
Dung lượng 865,98 KB

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

Nội dung

Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thông tin KỸ THUẬT LẬP TRÌNH TÌM KIẾM... Tìm kiếm tuần tự - Vét cạn Thuật toán: cho đến khi gặp được phần tử cần tìm, hoặc hết dãy...

Trang 1

Trường Đại học Khoa học Tự nhiên

Khoa Công nghệ thông tin

KỸ THUẬT LẬP TRÌNH

TÌM KIẾM

Trang 2

Nội dung

Giới thiệu

Thuật toán tìm kiếm

• Vét cạn

• Lính canh

• Tuyến tính

• Đệ quy

So sánh hiệu suất

Tổng kết

Trang 3

Giới thiệu

hàng ngày

Trang 4

Thuật toán tìm kiếm

Có nhiều loại:

Mục tiêu:

phù hợp khi áp dụng vào thực tế

Trang 5

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

Input:

Output:

Thuật toán:

Trang 6

Tìm kiếm tuần tự - Vét cạn

Thuật toán:

cho đến khi gặp được phần tử cần tìm, hoặc hết dãy

1 25 6 5 2 37 40

x = 6

x = 6

Dừng

1 25 6 5 2 37 40

1 25 6 5 2 37 40

x = 6

Trang 7

Tìm kiếm tuần tự - Vét cạn

Vậy độ phức tạp của thuật toán là:

Trang 8

Tìm kiếm tuần tự - Lính canh

kiểm tra

bằng cách dùng “lính canh”

cần tìm và đặt ở cuối mảng

Trang 9

Tìm kiếm tuần tự - Lính canh

Thuật toán:

1 25 5 2 37 6

x = 6

x = 6

x = 6

1 25 5 2 37 6

1 25 5 2 37 6

1 25 5 2 37 6

1 25 5 2 37 6

1 25 5 2 37 6

x = 6

x = 6

x = 6

(a)

(b)

(c)

(d)

(e)

(f)

Trang 10

Tìm kiếm tuần tự - Lính canh

Thuật toán:

x (chắc chắn sẽ tìm thấy x)

không thuộc mảng A

Trang 11

Tìm kiếm tuần tự - Lính canh

Thuật toán:

int LinearSentinel(int a[], int n, int x)

{

a[n] = x; //đặt lính canh

for (int i = 0; ;i++)

if (a[i] == x)

return i;

}

Trang 12

Tìm kiếm tuần tự - Lính canh

thời gian tìm kiếm giảm khi dùng phương pháp lính canh

so với 0.28s)

Trang 13

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

tạp của thuật toán tìm kiếm tuần tự không đổi

để giới hạn vị trí của giá trị cần tìm trong mảng -> Thuật toán tìm kiếm nhị phân

Trang 14

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

Input:

Output: giống với thuật toán tìm kiếm tuần tự

Ý tưởng:

• Nếu x là phần tử giữa thì dừng

trái hay nửa phải của A

Trang 15

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

Minh họa:

A[i] 1 2 6 26 28 37 40 Vòng 1 left mid right

Vòng 2 left mid right

x = a[1] -> return 1

Trang 16

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

Minh họa:

A[i] 1 2 6 26 28 37 40 Vòng 1 left mid right

Vòng 2 left mid right

mid right

x = a[6] -> return 6

Trang 17

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

Minh họa:

A[i] 1 2 6 26 28 37 40 Vòng 1 left mid right

Vòng 2 left mid right

Vòng 3 left

mid right

Vòng 4

right = -1, left = 0

Trang 18

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

Độ phức tạp của tìm kiếm nhị phân

Trang 19

So sánh hiệu suất

So sánh trường hợp xấu nhất của 2 thuật

toán:

Kích thước mảng

T/h xấu nhất

Tuần tự Nhị phân 100.000 100.000 16 200.000 200.000 17 400.000 400.000 18 800.000 800.000 19 1.600.000 1.600.000 20

Ngày đăng: 30/07/2018, 19:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w