1. Trang chủ
  2. » Giáo Dục - Đào Tạo

cấu trúc dữ liệu search tìm kiếm

29 58 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 29
Dung lượng 308,06 KB

Nội dung

tài liệu uy tín được biên soạn bởi giảng viên đại học Bách Khoa TPHCM, thuận lợi cho qua trình tự học, nghiên cứu bộ tự động hóa, điện tử, cơ điện tử, cơ khí chế tạo máy, lập trình nhúng, Tài liệu được kiểm duyệt bởi giảng viên, phòng đào tạo trường đại học bách khoa, lưu hành nội bộ

Chương Tìm kiếm (Buổi 2) Tìm kiếm ™ Giải thuật tìm kiếm (search algorithm) giải thuật tìm phần tử có đặc tính định tập phần tử Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm Tìm kiếm tuyến tính (linear search) tìm kiếm (sequential search) phương pháp tìm kiếm phần tử x danh sách phần tử cách kiểm tra phần tử danh sách cách tuần tự, phần tử tìm thấy phần tử x kiểm tra toàn danh sách ™ Danh sách khơng cần phải có thứ tự ™ Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm ™ Phương pháp: f Duyệt danh sách a0,…, an-1 cách để tìm kiếm phần tử (lần gặp đầu tiên) có khóa tìm kiếm (search key) x Kết thúc trình tìm kiếm tìm thấy phần tử có khóa x (tìm thấy) xét hết danh sách (khơng tìm thấy) f Kết tìm kiếm: có hai cách f y Cách 1: trả tìm thấy (true) khơng tìm thấy (false) y Cách 2: trả vị trí tìm thấy i >= -1 (khơng tìm thấy) Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm ™ Nhận xét: Nếu danh sách a0,…, an-1 có nhiều phần tử có giá trị khóa tìm kiếm (khóa thứ cấp – secondary key) trả kết lần gặp f Thời gian: T(n) = O(n) f Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm x=5 i i 6 8 1 i 1 5 6 6 2 2 7 7 4 4 found = false found = false found = false found = true i Hình 2.1 Phương pháp tìm kiếm Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm x=3 i i 1 2 4 i 4 5 5 6 6 6 6 7 7 8 8 i found = false found = false found = false not found Hình 2.2 Phương pháp tìm kiếm (dãy có thứ tự) Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm Giải thuật: // Mảng a có n phần tử chưa có thứ tự // Tìm kiếm x mảng a // Trả kết tìm thấy khơng tìm thấy found = false; a phần tử đầu tiên; while (a phần tử dãy && ! found) if (a x) found = true; else a phần tử kế tiếp; return found; Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm bool Sequential(int a[], int n, int x) // Mảng a có n phần tử chưa có thứ tự // Tìm kiếm x mảng a // Trả kết tìm thấy khơng tìm thấy { bool found = false; int i = 0; while ((i < n) && (! found)) if (a[i] == x) found = true; else i++; return found; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương 2: Tìm kiếm Tìm kiếm int main() { int n = 8; int a[] = {6, 8, 1, 5, 6, 2, 7, 4}; int x = 5; bool kq = Sequential(a, n, x); if (kq) cout

Ngày đăng: 03/02/2018, 08:23

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

TÀI LIỆU LIÊN QUAN

w