Tìm kiếm - Searching Trình bày các thuật toán thông dụng cho việc tìm kiếm (Tìm ppsx

5 305 0
Tìm kiếm - Searching Trình bày các thuật toán thông dụng cho việc tìm kiếm (Tìm ppsx

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

Thông tin tài liệu

1 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM1 pTrình bày các thuật toán thông dụng cho việc tìm kiếm (Tìm tuần tự, tìm nhị phân) p Minh họa các thuật toán p Đánh giá thuật toán Tìm kiếm -Searching Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM2 Công dụng p Tìm kiếm trong một danh sách các phần tử là một thao tác thường sử dụng trên máy tính p Ví dụ: p Cơ sở dữ liệu (Database): tìm 1 sinh viên, tìm 1 tài khoản ngân hàng,… p Internet: Yahoo!, Google,… 2 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM3 Các phương pháp phổ biến p Tìm tuần tự (Serial Search) p Đơn giản p Chi phí O(n) p Tìm nhị phân p Phải là 1 danh sách “đặc” p Dữ liệu cần được sắp thứ tự p Chi phí trung bình O(log 2 n) Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM4 Tìm tuần tự (Serial Search) int SerialSearch(int a[], int n, int key) { for (int i=0; i < n; i++) if (a[i]==key)return i;// tìm thấy return –1;// không tìm thấy } 3 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM5 Serial Search Đánh giá thuật toán p Kích thước của dãy: n p Trường hợp tốt nhất: O(1), key==a[0] p Trường hợp xấu nhất: O(n), key==a[n-1] hoặc không tìm thấy p Trường hợp trung bình: p ít hơn O(n) p Chính xác là bao nhiêu ? Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM6 Serial Search Trường hợp trung bình p Giả sử: p phần tử cần tìm key có trong dãy p xác suất xuất hiện tại các vị trí trong dãy là như nhau p Chi phí trung bình: 2 )1(2/)1( 321 + = + = ++++ n n nn n n 4 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM7 Tìm nhị phân (Binary Search) p Các phần tử được sắp p n= 8 p key = 16 p Xét phần tử giữa m= n/2 p Nếu (a[m]==key) à Kết thúc ! p Nếu(key< a[m]) Xét ½ dãy bên trái p Nếu (key > a[m]) Xét ½ dãy bên phải 181612107632 [0] [1] [2] [3] [4] [5] [6] [7] Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM8 Tìm nhị phân (Binary Search) 181612107632 [0] [1] [2] [3] [4] [5] [6] [7] [5][6][7] Tìm thấy 181612107632 [0] [1] [2] [3] [4] [5] [6] [7] 5 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM9 Binary Search (Minh họa chương trình int BinarySearch(int a[], int n, int key) { int Left = 0, Right = n-1; while (Left <= Right) { int Mid = (Left + Right)/2; if (a[Mid]==key)return Mid;// tìm thấy else if (key < a[Mid]) Right = Mid –1; else Left = Mid + 1; } return –1;// không tìm thấy } Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM10 So sánh chi phí . - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM1 pTrình bày các thuật toán thông dụng cho việc tìm kiếm (Tìm tuần tự, tìm nhị phân) p Minh họa các thuật toán p Đánh giá thuật toán Tìm kiếm -Searching Spring. Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM2 Công dụng p Tìm kiếm trong một danh sách các phần tử là một thao tác thường sử dụng trên máy tính p Ví dụ: p Cơ sở dữ liệu (Database): tìm. sinh viên, tìm 1 tài khoản ngân hàng,… p Internet: Yahoo!, Google,… 2 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM3 Các phương pháp phổ biến p Tìm tuần

Ngày đăng: 01/08/2014, 07:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan