1. Trang chủ
  2. » Tất cả

Bài giảng cấu trúc dữ liệu và giải thuật chương 2 trường đh văn lang

10 2 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giải Thuật Tìm Kiếm
Tác giả Trần Công Thanh
Trường học Đại học Văn Lang
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài giảng
Năm xuất bản 2020-2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 10
Dung lượng 668,13 KB

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

Nội dung

KHOA CÔNG NGHỆ THÔNG TIN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT GVGD 1 THS TRẦN CÔNG THANH HỌC KỲ I – NĂM HỌC 2020 2021 KHÓA BÀI 2 GIẢI THUẬT TÌM KIẾM NỘI DUNG Tìm kiếm tuyến tính02 Tìm kiếm nhị phân03 04 05[.]

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

GVGD:

1 THS TRẦN CÔNG THANH

HỌC KỲ I – NĂM HỌC 2020-2021 KHÓA

BÀI 2: GIẢI THUẬT TÌM KIẾM

Trang 3

NỘI

DUNG

Tìm kiếm tuyến tính

02.

Tìm kiếm nhị phân

03.

04.

05.

Bài tập

06.

Giới thiệu bài toán tìm kiếm

01.

Trang 4

ibaotu.com

4

KHOA CÔNG NGHỆ THÔNG TIN

❖ Tìm kiếm là quá trình xác định một đối tượng nào đó trong

một tập các đối tượng Kết quả trả về:

• Đối tượng tìm được (nếu có)

• Chỉ số (nếu có) xác định vị trí của đối tượng trong tập đó

❖ Việc tìm kiếm dựa theo một trường nào đó của đối tượng,

trường này là khóa (key) của việc tìm kiếm

Ví dụ: Tìm sinh viên có họ tên X trong DSSV.

SV {MaSV, HoTen, DiaChi,…}

Khoá?

Kết quả trả về?

1 Giới thiệu bài toán tìm kiếm

Trang 5

ibaotu.com

5

KHOA CÔNG NGHỆ THÔNG TIN

Bài toán được mô tả như sau:

• Tập dữ liệu được lưu trữ là dãy a1, a2, ,an Giả sử chọn cấu trúc dữ liệu mảng để lưu trữ dãy số này trong bộ nhớ chính, có khai báo: int a[n] ;

• Khóa cần tìm là x : int x ;

Tìm kiếm

Tìm kiếm tuyến tính Tìm kiếm nhị phân

Tập dữ liệu

đã được sắp xếp

Tập dữ liệu bất kỳ

Trang 6

ibaotu.com

6

KHOA CÔNG NGHỆ THÔNG TIN

1 Giới thiệu bài toán tìm kiếm

• Ý tưởng: duyệt tuần tự từ phần tử đầu tiên, lần lượt so

sánh khóa tìm kiếm với khoá tương ứng của các phần

tử trong danh sách Cho đến khi gặp phần tử cần tìm hoặc đến khi duyệt hết danh sách

• Các bước tiến hành như sau: i = 0

a[i]

= x

i = i + 1

i<

n

Không tìm thấy

Tìm thấy

Đ Đ

S

S

Trang 7

ibaotu.com

7

KHOA CÔNG NGHỆ THÔNG TIN

2 Tìm kiếm tuyến tính (Linear Search)

Ý tưởng:

Lần lượt so sánh x với phần tử thứ nhất, thứ hai, của mảng a cho đến khi gặp được phần tử cần tìm, hoặc hết

mảng

Trang 8

ibaotu.com

8

KHOA CÔNG NGHỆ THÔNG TIN

2 Tìm kiếm tuyến tính

• Ví dụ: Cho dãy số a, giá trị tìm X = 8:

12 2 5 8 1 6 4

X = 8

Tìm thấy

X = 7 Không tìm

thấy

i=0 i=1 i=2 i=3 i=4 i=5 i=6

i=0 i=1 i=2 i=3 i=4 i=5 i=6

Trang 9

ibaotu.com

9

KHOA CÔNG NGHỆ THÔNG TIN

Giải thuật

Bước 1:

i = 0; // bắt đầu từ phần tử đầu tiên của dãy

Bước 2: So sánh a[i] với x, có 2 khả năng :

• a[i] = x : Tìm thấy Dừng

• a[i] != x : Sang Bước 3

Bước 3:

• i = i+1; // xét tiếp phần tử kế trong mảng

• Nếu i >N: Hết mảng, không tìm thấy Dừng Ngược lại: Lặp lại Bước 2

Trang 10

ibaotu.com

10

KHOA CÔNG NGHỆ THÔNG TIN

2 Tìm kiếm tuyến tính

Thuật toán tìm kiếm tuyến tính

/* Trả về: vị trí xuất hiện đầu tiên của x trong mảng a Trả về: -1 nếu x không có trong mảng a */

{

int i =0;

i++;

if (i < n)

}

Ngày đăng: 22/02/2023, 16:16

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