Bài giảng "Cấu trúc dữ liệu và giải thuật - Chương 3: Các thuật toán tìm kiếm trên mảng và chuỗi" cung cấp cho người học các kiến thức về các bài toán tìm kiếm. Đây là một tài liệu hữu ích dành cho các bạn sinh viên và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu. | Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Bùi Tiến Lên CÁC THUẬT TOÁN TÌM KIẾM TRÊN MẢNG VÀ CHUỖI Bùi Tiến Lên 01/01/2017 Bài toán tìm kiếm I Tìm kiếm (search) là một công việc hàng ngày trong cuộc sống. I Tìm kiếm là một trong những bài toán quan trọng trong các ứng dụng tin học. I Một số thuật toán tìm kiếm phổ biến trên cấu trúc dữ liệu mảng I Tìm kiếm tuần tự I Tìm kiếm nhị phân I Tìm kiếm chuỗi cũng được xem là một bài toán tìm kiếm trên mảng Spring 2017 Data structure & Algorithm 2 TÌM KIẾM TRÊN MẢNG Bài toán Định nghĩa 1 Cho một dãy a có n phần tử. Hãy tìm xem một phần tử x có trong dãy a hay không? Bài toán này có thể yêu cầu thêm những thông tin: Tìm vị trí phần tử x trong mảng, có bao nhiều phần tử x trong mảng Spring 2017 Data structure & Algorithm 4 Tìm kiếm tuần tự Ý tưởng Duyệt tuần tự từng phần tử trong mảng a và so sánh với phần tử x. Spring 2017 Data structure & Algorithm 5 Tìm kiếm tuần tự (cont.) 1 int LinearSearch (int a[], int n, int x) 2 { 3 for (int i = 0; i < n; i++) 4 if (a[i] == x) 5 return i; 6 return -1; 7 } Spring 2017 Data structure & Algorithm 6 Đánh giá độ phức tạp I Đánh giá chi phí thực hiện dựa tham số n (số phần tử) Trường hợp Hàm ước lượng O(g(n)) tốt nhất trung bình xấu nhất Spring 2017 Data structure & Algorithm 7 Tìm kiếm nhị phân Ý tưởng Nếu các phần tử trong dãy có quan hệ thứ tự; nghĩa là có thể so sánh bằng, lớn hơn, nhỏ hơn giứa chúng. Ta có thể tổ chức lại dãy a để có thể tìm kiếm hiệu