Bài giảng Thuật toán ứng dụng: Tìm kiếm và Sắp xếp cung cấp cho người học những kiến thức như: Tìm kiếm tuyến tính, nhị phân; Sắp xếp; Các cấu trúc dữ liệu trừu tượng. Mời các bạn cùng tham khảo!
THUẬT TỐN ỨNG DỤNG Tìm kiếm Sắp xếp Nội dung Tìm kiếm Tuyến tính Nhị phân Sắp xếp Nổi bọt / Chèn / Chọn Trộn / Nhanh / Vun đống Các cấu trúc liệu trừu tượng Stack Queue Heap Set Map TRƯƠNG XUÂN NAM Phần Tìm kiếm TRƯƠNG XUÂN NAM Tìm kiếm ▪ Bài tốn máy tính ▪ Tìm thành phần trang hình ▪ Tìm tên danh bạ ▪ Tìm kiếm web ▪ Câu trả lời ▪ Có liệu cần tìm hay khơng ▪ Vị trí liệu cần tìm ▪ Tùy vào liệu ▪ Dữ liệu lộn xộn khơng có đặc trưng cụ thể ▪ Dữ liệu xếp ▪ Dữ liệu tổ chức TRƯƠNG XUÂN NAM Tìm kiếm tuyến tính (linear search) ▪ Giải thuật tìm kiếm ▪ Dữ liệu lộn xộn khơng có tính chất đặc biệt ▪ Duyệt phần tử từ đầu tìm liệu mong muốn hết liệu ▪ Có lẽ cách giải trường hợp tốn khơng có ràng buộc liệu TRƯƠNG XUÂN NAM Tìm kiếm nhị phân (binary search) ▪ Dữ liệu xếp (tăng dần) ▪ Chia đơi khoảng tìm kiếm, đủ nhỏ // tìm kiếm nhị phân, cài đặt kiểu đệ quy int binary_search(int arr[], int l, int r, int x) { if (r < l) return -1; int mid = l + (r - l) / 2; // tìm thấy if (arr[mid] == x) return mid; // tìm nửa trước if (arr[mid] > x) return binary_search(arr, l, mid - 1, x); // tìm nửa sau return binary_search(arr, mid + 1, r, x); } TRƯƠNG XUÂN NAM Tìm kiếm nhị phân (binary search) ▪ Cài đặt kiểu vòng lặp ổn kiểu đệ quy chỗ nào? ▪ Cài đặt cải tiến điểm // tìm kiếm nhị phân, cài đặt vòng lặp int binary_search2(int arr[], int l, int r, int x) { while (l