Bài giảng Cấu trúc dữ liệu và giải thuật -
Chương 7: Tìm Kiếm
Mục tiêu
Trì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)
Minh họa các thuật toán
Đánh giá thuật toán
12 trang |
Chia sẻ: phuongt97 | Lượt xem: 540 | Lượt tải: 0
Nội dung tài liệu Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 7: Tìm kiếm - Phạm Thanh An, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 7: Tìm KiếmThs. Phạm Thanh AnBộ môn Khoa học máy tính - Khoa CNTTTrường Đại học Ngân hàng TP.HCMMục tiêuTrì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)Minh họa các thuật toánĐánh giá thuật toánTầm quan trọng của tìm kiếmTìm kiếm một phần tử trong một tập hợp k đối tượng một thao tác thường sử dụng trong đời sống hằng ngàyTầm quan trọng của tìm kiếmVí dụ: Cơ sở dữ liệu (Database): tìm 1 sinh viên, tìm 1 tài khoản ngân hàng, tài liệu, quyển sách.Internet: Yahoo!, Google,TÌM KIẾM (SEARCHING)Định nghĩaCho n bản ghi R1,R2,,Rn, khóa tương ứng kiHãy tìm bản ghi có giá trị khóa bằng XKết quả tìm kiếmThành công: có bản ghi với giá trị khóa XKhông thành công: không có bản ghi thích hợpPhân loại tìm kiếmTìm kiếm trongTìm kiếm ngoàiTìm kiếm tuần tự (sequential searching)Ý tưởngLần lượt tìm kiếm từ bản ghi đầu tiên cho đến khi tìm thấy, hoặc không còn phần tử để tìm kiếmThực hiện tìm kiếm trên mảng / danh sách liên kết đơnTìm kiếm tuần tự (sequential searching)Giải thuậtbool SequentialSearch(int a[],int n,int x){ for (int i=0;ia[(n+1) div 2], quay lại (1), tìm kiếm trong dãy a[(n+1) div 2 + 1],,a[n]Kết thúcTìm kiếm nhị phânGiải thuậtint BinarySearch(int a[ ],int l, int r,int x){ int m while (la[m]) l=m+1; } return -1;}Tìm kiếm nhị phânGiải thuật int BinarySearch1(int a[],int l,int r,int x){ int m=(l+r)/2; if (a[m]==x) return m; if ( x a[m]) return BinarySearch1(a,m+1,r,x); return -1;}Q&A
Các file đính kèm theo tài liệu này:
- chuong_7_2554_284370.ppt