Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Châu Thị Bảo Hà
lượt xem 5
download
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 3 trang bị cho người học những kiến thức về tìm kiếm (searching). Trong chương này sẽ trình bày những nội dung khái quát về tìm kiếm, tìm tuyến tính (Linear Search) và tìm nhị phân (Binary Search). Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Châu Thị Bảo Hà
- CHƯƠNG 3: TÌM KIẾM (SEARCHING)
- NỘI DUNG 1. Khái quát về tìm kiếm 2. Tìm tuyến tính (Linear Search) 3. Tìm nhị phân (Binary Search) 2
- KHÁI QUÁT VỀ TÌM KIẾM Tìm kiếm là một yêu cầu rất thường xuyên trong đời sống hàng ngày cũng như trong tin học Ví dụ: Tìm kiếm một sinh viên trong lớp Tìm kiếm một tập tin, thư mục trong máy Để đơn giản, xét bài toán tìm kiếm như sau: Cho một dãy số gồm các phần tử a1, a2, ..., an. Cho biết trong dãy này có phần tử nào có giá trị bằng X (cho trước) hay không? 3 Chương 3: Tìm kiếm
- KHÁI QUÁT VỀ TÌM KIẾM Xét hai cách tìm kiếm: Tìm kiếm tuyến tính (Linear Search) hay còn gọi là tìm kiếm tuần tự (Sequential Search) Tìm kiếm nhị phân (Binary Search) 4
- NỘI DUNG 1. Khái quát về tìm kiếm 2. Tìm tuyến tính (Linear Search) 3. Tìm nhị phân (Binary Search) 5
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) Ý tưởng: Bắt đầu từ phần tử đầu tiên của danh sách, so sánh lần lượt từng phần tử của danh sách với giá trị X cần tìm Nếu có phần tử bằng X thì trả về vị trí tìm thấy, thuật toán dừng lại (thành công) Nếu đến cuối danh sách mà không có phần tử nào bằng X, thuật toán dừng lại (không thành công) If we find a match, the search terminates successfully by returning the index of the element If the end of the list is encountered without a match, the 6 search terminates unsuccessfully
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) Thuật toán: Input: Danh sách A và phần tử cần tìm X B1: i = 0 ; // bắt đầu từ phần tử đầu tiên B2: so sánh A[i] với X, có 2 khả năng : A[i] = X : Tìm thấy X tại vị trí i. Dừng A[i] ≠ X : Sang B3 B3: i=i+1 // Xét phần tử tiếp theo trong 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 7
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) 5 Vị trí = 2 Khóa tìm 0 1 2 3 4 5 6 7 7 13 5 21 6 2 8 15 Tìm thành công Số lần so sánh: 3 8
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) 9 Khóa tìm 0 1 2 3 4 5 6 7 7 13 5 21 6 2 8 15 Không tìm thấy Số lần so sánh: 8 9
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) Xem bài hoàn chỉnh GT.46-47 10
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) 11
- 2. TÌM TUYẾN TÍNH (LINEAR SEACH) Phân tích, đánh giá thuật toán Trường hợp Số lần so sánh Giải thích Tốt nhất 1 Phần tử đầu tiên có giá trị x Xấu nhất n Phần tử cuối cùng có giá trị x Trung Giả sử xác suất các phần tử trong n/2 bình mảng nhận giá trị x là như nhau. Vậy giải thuật tìm tuyến tính có độ phức tạp tính toán cấp n: T(n) = O(n) 12
- NỘI DUNG 1. Khái quát về tìm kiếm 2. Tìm tuyến tính (Linear Search) 3. Tìm nhị phân (Binary Search) 13
- 3. TÌM NHỊ PHÂN (BINARY SEACH) Điều kiện: Danh sách phải được sắp xếp trước Ý tưởng: So sánh giá trị muốn tìm X với phần tử nằm ở vị trí giữa của danh sách: Nếu bằng, tìm kiếm dừng lại (thành công) Nếu X lớn hơn thì tiếp tục tìm kiếm ở phần danh sách bên phải phần tử giữa Nếu X nhỏ hơn thì tiếp tục tìm kiếm ở phần danh sách bên trái phần tử giữa We compare the element with the element placed approximately in the middle of 14 the list If a match is found, the search terminates successfully Otherwise, we continue the search for the key in a similar manner either in
- 3. TÌM NHỊ PHÂN (BINARY SEACH) 10 Vi trí = 3 Khóa cần tìm lớn hơn Khóa cần tìm nhỏ hơn Khóa tìm Khóa cần tìm bằng 0 1 2 3 4 5 6 7 8 9 2 5 8 10 12 13 15 18 21 24 left mid right Tìm thấy Số lần so sánh: 4 15
- 3. TÌM NHỊ PHÂN (BINARY SEACH) Thuật toán: Input: Danh sách A đã được sắp xếp và phần tử cần tìm X B1: Left = 0, Right = n-1 B2: Mid = (Left + Right)/2 // lấy vị trí cận giữa B3: So sánh X với A[Mid], có 3 khả năng xảy ra: A[Mid] = X // tìm thấy. Dừng thuật toán A[Mid] > X Right = Mid-1 // Tiếp tục tìm trong dãy A[0]… A[Mid-1] A[Mid] < X Left = Mid+1 // Tiếp tục tìm trong dãy A[Mid+1]… A[Right] B4: Nếu (Left
- 3. TÌM NHỊ PHÂN (BINARY SEACH) Không đệ quy Xem bài hoàn chỉnh GT.49-51 17
- 3. TÌM NHỊ PHÂN (BINARY SEACH) Đệ quy 18
- 3. TÌM NHỊ PHÂN (BINARY SEACH) Phân tích, đánh giá thuật toán: Trường Số lần so sánh Giải thích hợp Phần tử giữa của mảng có giá trị Tốt nhất 1 x Xấu nhất log 2 n Không có x trong mảng Giả sử xác suất các phần tử Trung bình log 2 (n/2) trong mảng nhận giá trị x là như nhau Vậy giải thuật tìm nhị phân có độ phức tạp tính toán cấp 19 n: T(n) = O(log2n)
- NHẬN XÉT Giải thuật Tìm Nhị Phân tiết kiệm thời gian hơn rất nhiều so với giải thuật Tìm Tuyến Tính do: O(log2n) < O(n) Tìm Tuyến Tính là phương pháp tổng quát nhất để tìm kiếm trên một dãy bất kỳ Tìm Nhị Phân chỉ áp dụng được cho những dãy đã có 20 thứ tự
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 79 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn