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

Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 6 - Nguyễn Đức Nghĩa

85 80 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 1,51 MB

Nội dung

Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 6: Tìm kiếm cung cấp cho người đọc các kiến thức: Tìm kiếm tuần tự và tìm kiếm nhị phân, cây nhị phân tìm kiếm, cây AVL, tìm kiếm xâu mẫu, bảng băm. Mời các bạn cùng tham khảo.

Chương TÌM KIẾM NỘI DUNG 6.1 Tìm kiếm tìm kiếm nhị phân 6.2 Cây nhị phân tìm kiếm 6.3 Cây AVL 6.4 Tìm kiếm xâu mẫu 6.5 Bảng băm CuuDuongThanCong.com Nguyễn Đức Nghĩa - Bộ mơn KHMT ĐHBKHN 6.1 Tìm kiếm tìm kiếm nhị phân 6.1.1 Tìm kiếm (Linear Search or Sequential Search) 6.1.2 Tìm kiếm nhị phân Nguyễn Đức Nghĩa - Bộ mơn KHMT ĐHBKHN Bài tốn tìm kiếm Cho danh sách a gồm n phần tử a1, a2, , an số x Hỏi x có mặt danh sách cho hay khơng? Nếu câu trả lời khẳng định, đưa vị trí xuất x dãy cho, nghĩa đưa số i cho = x CuuDuongThanCong.com Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN 6.1.1 Tìm kiếm current -7 -5 -4 • Bắt đầu từ phần tử đầu tiên, duyệt qua phần tử tìm đích kết luận khơng tìm • Các số khơng cần thứ tự • Làm việc với danh sách móc nối (Linked Lists) Độ phức tạp: O(n) Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN Linear Search int linearSearch(float a[], int size, int target) { int i; for (i = 0; i < size; i++) { if (a[i] == target) { return i; } } return -1; } CuuDuongThanCong.com Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN Phân tích thời gian tính  Cần đánh giá thời gian tính tốt nhất, tồi nhất, trung bình thuật toán với độ dài đầu vào n Rõ ràng thời gian tính thuật tốn đánh giá số lần thực phép so sánh (*) (a[i] == target) vòng lặp for  Nếu a[1] = target phép so sánh (*) phải thực lần Do thời gian tính tốt thuật tốn (1)  Nếu target khơng có mặt dãy cho, phép so sánh (*) phải thực n lần Vì thời gian tính tồi thuật toán (n) Nguyễn Đức Nghĩa - Bộ mơn KHMT ĐHBKHN Phân tích thời gian tính  Cuối cùng, ta tính thời gian tính trung bình thuật tốn Nếu target tìm thấy vị trí thứ i dãy (target = a[i]) phép so sánh (*) phải thực i lần (i = 1, 2, , n), cịn target khơng có mặt dãy cho phép so sánh (*) phải thực n lần Từ suy số lần trung bình phải thực phép so sánh (*) [(1 + + + n) + n] /(n+1) = [n+ n(n+1)/2]/(n+1) = (n2 + 3n)/[2(n+1)]  Ta có: n/4  (n2+3n)/[2(n+1)]  n  Vì vậy, thời gian tính trung bình thuật tốn (n) CuuDuongThanCong.com Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN 6.1.2 Tìm kiếm nhị phân- Binary Search mid • Điều kiện: – Danh sách phải thứ tự – Phải cho phép trực truy Độ phức tạp: O(log n) Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN Tình 1: target < list[mid] target list: lower New upper mid upper Tình 2: list[mid] < target target list: lower mid New lower CuuDuongThanCong.com Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN upper 10 Cài đặt C int binarySearch(float array[], int size, int target) { int lower = 0, upper = size - 1, mid; } while (lower target) { upper = mid - 1; } else if (array[mid] < target) { lower = mid + 1; } else Đoạn cần khảo sát { return mid; } } có độ dài giảm nửa return -1; sau lần lặp Độ phức tạp: O(log n) Nguyễn Đức Nghĩa - Bộ mơn KHMT ĐHBKHN 11 Ví dụ minh hoạ ứng dụng BS • • • • Dãy cấp ba Bộ gồm ba số nguyên (a1, a2, a3) gọi cấp số cộng tăng như: a2 – a1 = a3 – a2 a2 – a1 > Bộ ba (a1, a2, a3) gọi trước ba (b1, b2, b3) thứ tự từ điển ba điều kiện sau thực hiện: 1) a1 < b1; 2) a1 = b1 a2 < b2; 3) a1 = b1 , a2 = b2 a3 < b3 Dãy số nguyên c1, c2, …, cn ( | ci | < 231, i = 1, 2, …, n) gọi dãy cấp ba tìm ba số hạng để lập thành ba cấp số cộng tăng Ví dụ: Dãy 3, 1, 5, 2, -7, 0, -1 dãy cấp ba, chứa ba cấp số cộng tăng, chẳng hạn (1, 3, 5) hay (-7, -1, 5) Bộ ba (-7, -1, 5) ba cấp số cộng tăng theo thứ tự từ điển số ba cấp số cộng tăng dãy cho Yêu cầu: Hãy kiểm tra xem dãy số nguyên cho trước có phải dãy cấp ba hay khơng Nếu câu trả lời khẳng định đưa ba cấp số cộng tăng thứ tự từ điển CuuDuongThanCong.com Nguyễn Đức Nghĩa - Bộ môn KHMT ĐHBKHN 12 Thuật tốn trực tiếp • Sắp xếp dãy a[1 n] theo thứ tự khơng giảm • Duyệt tất ba a[i], a[j], a[k],

Ngày đăng: 11/01/2020, 17:05

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN