phương pháp tìm kiếm nhị phân, phương pháp này cũng chia danh sách thành các danh sách con và tìm ki ếm trên đó. Phương pháp tìm kiếm nội suy nhanh hơn phương pháp[r]
(1)Cấu trúc liệu giải thuật
Bài 8: Các thuật tốn tìm kiếm
(2)Nội dung:
8.1 Khái niệm tìm kiếm (3)
8.2 Phương pháp tìm kiếm (7) 8.3 Phương pháp tìm kiếm nhị phân (8) 8.4 Phương pháp tìm kiếm nội suy (7)
Tham khảo:
1 Data structures and Algorithms Searching.htm
2 Kyle Loudon Mastering Algorithms, Chapter 12 Sorting and Searching Lecture 19 Sequential and Binary Search.htm
(3)8.1 Khái niệm tìm kiếm (1/3)
Trong thực tế, việc xác định vị trí phần tử danh sách ( xếp chưa xếp) có ý nghĩa quan trọng dùng nhiều ứng dụng
Ví dụ 1: chương trình tra cứu từ điển, chương trình cần trả lời nghĩa từ
Ví dụ 2: danh sách thí sinh, chương trình cần đưa tất thơng tin thí sinh thỏa mãn số tiêu chí
(4) Trong thực tế, với ý tưởng khác dẫn đến phương pháp tìm kiếm khác nhau.
Phương pháp tìm kiếm thông dụng
thực tế tìm kiếm tuần tự Đây phương pháp
(5)8.1 Khái niệm tìm kiếm (3/3)
Phương pháp tìm kiếm nhị phân: chia danh sách thành
các danh sách tìm kiếm Với liệu lớn, phương pháp cho tốc độ tìm kiếm tốt phương
pháp
Phương pháp tìm kiếm nội suy: giống
phương pháp tìm kiếm nhị phân, phương pháp chia danh sách thành danh sách tìm kiếm
Phương pháp tìm kiếm nội suy nhanh phương pháp
(6) Đây phương pháp tìm kiếm đơn giản nhất. Ý tưởng chung tìm kiếm tuần tự:
Sử dụng vòng lặp để duyệt danh sách, xuất phát từ phần tử danh sách
(7)8.1 Tìm kiếm (2/7)
Sub LinearSearch(x:int, a[]: Int, loc: Int) i:=1
While (i<=n) And (x<>a[i]) i:=i+1
End While
If i<=n Then loc = i Else loc = 0 End Sub
(8) Giả sử cho danh sách số nguyên gồm:
Ví dụ: tìm vị trí phần tử có giá trị 11, việc tìm kiếm phần tử có giá trị 17, đến 23, đến 5, đến 11: đưa thơng báo tìm thấy, trả vị trí thứ danh sách.
Ví dụ: tìm vị trí phần tử có giá trị 7, việc tìm kiếm phần tử có giá trị 17, qua danh sách,
ấy, trả thông tin: ấy
(9)8.1 Tìm kiếm (4/7)
Một số ưu điểm thuật tốn tìm kiếm tuần tự:
Rất đơn giản để nắm bắt
Đơn giản việc thực
Danh sách ban đầu không cần thiết phải theo
một thứ tự
Nhược điểm phương pháp tìm kiếm tuần tự:
Hiệu phương pháp
(10)Use a Sentinel to Improve the Performance
Sub LinearSearch2(x:int, a[]: Int, loc: Int) a[n+1] = x: n = n + 1: i = 1
While (x<>a[i])
i = i+1 End While