Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Đỗ Bích Diệp
Số trang: 23
Loại file: pdf
Dung lượng: 391.18 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin 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" cung cấp cho sinh viên các kiến thức: Tìm kiếm tuần tự và tìm kiếm nhị phân, tìm kiếm trên cây nhị phân (cây nhị phân tìm kiếm, cây nhị phân tìm kiếm cân bằng (AVL)). Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Đỗ Bích DiệpCấu trúc dữ liệu và giải thuật Chương VII : Tìm kiếm Tìm kiếm – Phần I z Nội dung 1. Tìm kiếm tuần tự và tìm kiếm nhị phân 2. Tìm kiếm trên cây nhị phân 1. Cây nhị phân tìm kiếm 1. Đặc điểm của cây nhị phân tìm kiếm 2. Thao tác bổ sung trên cây nhị phân tìm kiếm 3. Thao tác loại bỏ trên cây nhị phân tìm kiếm 2. Cây nhị phân tìm kiếm cân bằng (AVL) 1. Khôi phục tính cân bằng khi thực hiện bổ sung và loại bỏĐỗ Bích Diệp - Khoa CNTT-ĐHBK HN 1Cấu trúc dữ liệu và giải thuật Bài toán Tìm kiếm – Tìm kiếm là thuật toán tìm 1 phần tử có giá trị cho trước trong một tập các phần tử 23 78 45 8 32 56 78? 23 78 45 8 32 56 – Khóa tìm kiếm: Một bộ phận của các phần tử trong tập mà giá trị của nó được sử dụng để so sánh và tìm kiếm Tìm kiếm tuần tự – Tìm kiếm tuần tự z Các phần tử trong tập đầu vào không được sắp xếp theo khóa tìm kiếm z Mô tả – Duyệt dãy (danh sách, hàng đợi , v…v ) chứa các phần tử trong tập – So sánh với khóa cần tìm tới khi tìm thấy khóa hoặc duyệt qua hết mảng mà chưa tìm thấy – Trả lại chỉ số phần tử trong dãy (nếu thấy)Đỗ Bích Diệp - Khoa CNTT-ĐHBK HN 2Cấu trúc dữ liệu và giải thuật Tìm kiếm tuần tự Function SEQUENTIAL(A, n, key) ≠ {tìm phần tử có khóa key trong mảng A gồm n phần tử. Kết quả trả ra: -1 nếu không tìm thấy phần tử có khóa key, chỉ số của phần tử nếu tìm thấy} 1. i:= 1; 2. while (i n) then return -1 { không thấy}; 4. else return i{tìm thấy tại vị trí i} Tìm kiếm tuần tự – Độ phức tạp : z Trường hợp tốt nhất: O(1) z Trường hợp tồi nhất: O(n) z Trường hợp trung bình : O(n)Đỗ Bích Diệp - Khoa CNTT-ĐHBK HN 3Cấu trúc dữ liệu và giải thuật Tìm kiếm nhị phân z Tìm kiếm nhị phân – Sử dụng cho việc tìm kiếm trên mảng đã được sắp xếp – Mô tả z Chọn phần tử “ở giữa” dãy – A[k] để thực hiện so sánh với giá trị cần tìm z Nếu key = A[k] thì tìm thấy , kết thúc z Nếu key < A[k] thì tìm trên nửa đầu của mảng đã cho z Nếu key > A[k] thì tìm trên nửa sau của mảng đã cho Tìm kiếm nhị phân Function BINARY-SEARCH(A,l, r, key) 1. If (l> r) return -1; 2. m = (l+r) /2 ; 3. If (A[m] = key ) return m ; 4. Else if (A[m] > key) return BINARY-SEARCH(A, l, m-1, key); 5. Else return BINARY-SEARCH(A, m+1, r, key);Đỗ Bích Diệp - Khoa CNTT-ĐHBK HN 4Cấu trúc dữ liệu và giải thuật Tìm kiếm nhị phân Function BINARY-SEARCH(A,n,key) 1. l:=1 ; r := n ; { l, r lần lượt là biến chỉ số sử dụng để ghi nhận chỉ số của phần tử đầu và phần tử cuối của mảng mà chú ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Đỗ Bích DiệpCấu trúc dữ liệu và giải thuật Chương VII : Tìm kiếm Tìm kiếm – Phần I z Nội dung 1. Tìm kiếm tuần tự và tìm kiếm nhị phân 2. Tìm kiếm trên cây nhị phân 1. Cây nhị phân tìm kiếm 1. Đặc điểm của cây nhị phân tìm kiếm 2. Thao tác bổ sung trên cây nhị phân tìm kiếm 3. Thao tác loại bỏ trên cây nhị phân tìm kiếm 2. Cây nhị phân tìm kiếm cân bằng (AVL) 1. Khôi phục tính cân bằng khi thực hiện bổ sung và loại bỏĐỗ Bích Diệp - Khoa CNTT-ĐHBK HN 1Cấu trúc dữ liệu và giải thuật Bài toán Tìm kiếm – Tìm kiếm là thuật toán tìm 1 phần tử có giá trị cho trước trong một tập các phần tử 23 78 45 8 32 56 78? 23 78 45 8 32 56 – Khóa tìm kiếm: Một bộ phận của các phần tử trong tập mà giá trị của nó được sử dụng để so sánh và tìm kiếm Tìm kiếm tuần tự – Tìm kiếm tuần tự z Các phần tử trong tập đầu vào không được sắp xếp theo khóa tìm kiếm z Mô tả – Duyệt dãy (danh sách, hàng đợi , v…v ) chứa các phần tử trong tập – So sánh với khóa cần tìm tới khi tìm thấy khóa hoặc duyệt qua hết mảng mà chưa tìm thấy – Trả lại chỉ số phần tử trong dãy (nếu thấy)Đỗ Bích Diệp - Khoa CNTT-ĐHBK HN 2Cấu trúc dữ liệu và giải thuật Tìm kiếm tuần tự Function SEQUENTIAL(A, n, key) ≠ {tìm phần tử có khóa key trong mảng A gồm n phần tử. Kết quả trả ra: -1 nếu không tìm thấy phần tử có khóa key, chỉ số của phần tử nếu tìm thấy} 1. i:= 1; 2. while (i n) then return -1 { không thấy}; 4. else return i{tìm thấy tại vị trí i} Tìm kiếm tuần tự – Độ phức tạp : z Trường hợp tốt nhất: O(1) z Trường hợp tồi nhất: O(n) z Trường hợp trung bình : O(n)Đỗ Bích Diệp - Khoa CNTT-ĐHBK HN 3Cấu trúc dữ liệu và giải thuật Tìm kiếm nhị phân z Tìm kiếm nhị phân – Sử dụng cho việc tìm kiếm trên mảng đã được sắp xếp – Mô tả z Chọn phần tử “ở giữa” dãy – A[k] để thực hiện so sánh với giá trị cần tìm z Nếu key = A[k] thì tìm thấy , kết thúc z Nếu key < A[k] thì tìm trên nửa đầu của mảng đã cho z Nếu key > A[k] thì tìm trên nửa sau của mảng đã cho Tìm kiếm nhị phân Function BINARY-SEARCH(A,l, r, key) 1. If (l> r) return -1; 2. m = (l+r) /2 ; 3. If (A[m] = key ) return m ; 4. Else if (A[m] > key) return BINARY-SEARCH(A, l, m-1, key); 5. Else return BINARY-SEARCH(A, m+1, r, key);Đỗ Bích Diệp - Khoa CNTT-ĐHBK HN 4Cấu trúc dữ liệu và giải thuật Tìm kiếm nhị phân Function BINARY-SEARCH(A,n,key) 1. l:=1 ; r := n ; { l, r lần lượt là biến chỉ số sử dụng để ghi nhận chỉ số của phần tử đầu và phần tử cuối của mảng mà chú ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu Bài giảng Giải thuật Tìm kiếm tuần tự Tìm kiếm nhị phân Cây nhị phân tìm kiếm cân bằng Tìm kiếm trên cây nhị phânGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
Giáo trình Lập trình cơ bản với C++ - Phan 2
69 trang 197 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 161 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 150 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 123 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 74 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 74 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 72 0 0