1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm kiếm - Searching

5 492 1
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 56,03 KB

Nội dung

Tìm kiếm - Searching

1Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM1pTrì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ánp Đánh giá thuật toánTìm kiếm -SearchingSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM2Công dụngp 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ínhp Ví dụ:pCơ sở dữ liệu (Database): tìm 1 sinh viên, tìm 1 tài khoản ngân hàng,…pInternet: Yahoo!, Google,… 2Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM3Các phương pháp phổ biếnp Tìm tuần tự (Serial Search)p Đơn giảnpChi phí O(n)p Tìm nhị phânpPhải là 1 danh sách “đặc”pDữ liệu cần được sắp thứ tựpChi phí trung bình O(log2n)Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM4Tì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ấyreturn –1;// không tìm thấy} 3Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM5Serial SearchĐánh giá thuật toánp Kích thước của dãy: np 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ấyp Trường hợp trung bình:pít hơn O(n)pChính xác là bao nhiêu ?Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM6Serial SearchTrường hợp trung bìnhp Giả sử:pphần tử cần tìm key có trong dãypxác suất xuất hiện tại các vị trí trong dãy là như nhaup Chi phí trung bình:2)1(2/)1( .321 +=+=++++ nnnnnn 4Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM7Tìm nhị phân(Binary Search)p Các phần tử được sắpp n= 8p key = 16p Xét phần tử giữam= n/2p Nếu (a[m]==key) à Kết thúc !p Nếu(key< a[m])Xét ½ dãy bên tráip Nếu (key > a[m]) Xét ½ dãy bên phải181612107632[0] [1] [2] [3] [4] [5] [6] [7]Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM8Tìm nhị phân(Binary Search)181612107632[0] [1] [2] [3] [4] [5] [6] [7][5][6][7]Tìm thấy181612107632[0] [1] [2] [3] [4] [5] [6] [7] 5Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM9Binary Search(Minh họa chương trìnhint 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ấyelse 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.HCM10So sánh chi phí . Đánh giá thuật toánTìm kiếm -SearchingSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM2Công dụngp Tìm kiếm trong một. Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM1pTrì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

Ngày đăng: 09/10/2012, 16:20

w