Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
415,5 KB
Nội dung
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Chương 4: Kỹ Thuật Tìm kiếm (SEARCHING) Khái niệm tìm kiếm Tìm kiếm yêu cầu thường xuyên đời sống hàng ngày tin học Để đơn giản ta xét tốn tìm kiếm sau: Cho dãy số gồm phần tử a1, a2, , an Cho biết dãy có phần tử có giá trị X (cho trước) hay không? Đo độ hiệu quả: Số lần so sánh khóa cần tìm khóa ghi Phân loại: Tìm kiếm nội (internal searching) Tìm kiếm ngoại (external searching) Bản ghi khóa Bản ghi: Khóa Dữ liệu Khóa: So sánh Thường số Hàm tìm kiếm Tham số vào: Danh sách cần tìm Khóa cần tìm Tham số ra: Vị trí phần tử tìm thấy (nếu có) Kết hàm: kiểu int Tìm thấy: vị trí Khơng tìm thấy: -1 Tìm (sequential search) Ý tưởng: So sánh phần tử mảng A với giá trị X cần tìm phần tử tìm thấy tìm hết mảng mà khơng tìm thấy X Tìm (sequential search) position = Target key 7 13 21 15 return Số lần so sánh: Tìm - khơng tìm thấy Target key 7 13 21 15 return -1 Số lần so sánh: Tìm - Thuật toán B1: i = ;// phần tử B2: so sánh A[i] với X, có khả : A[i] =X : Tìm thấy Dừng A[i] X : Sang B3 B3: i=i+1 // Xét phần tử 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 B2 Tìm - mã C++ int LinearSearch (int A[], int n, int X) { int i = 0; while (A[i] != X && i