Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2.1 - Trần Minh Thái

Mục tiêu của bài giảng này nhằm giúp người học xác định được vai trò của tìm kiếm và sắp xếp trong hệ thống thông tin, nắm vững và minh họa được giải thuật tìm kiếm tuyến tính và tìm kiếm nhị phân trên mảng một chiều, cài đặt được giải thuật tìm kiếm bằng ngôn ngữ C/C++. để nắm bắt các nội dung chi tiết. | Chương . Giải thuật tìm kiếm Trần Minh Thái Email: minhthai@ Website: 1 Mục tiêu Xác định được vai trò của tìm kiếm và sắp xếp trong hệ thống thông tin Nắm vững và minh họa được giải thuật tìm kiếm tuyến tính và tìm kiếm nhị phân trên mảng một chiều Cài đặt được giải thuật tìm kiếm bằng ngôn ngữ C/C++ 2 Suy nghĩ 3 Tại sao hầu hết phần mềm phải có chức năng tìm kiếm và sắp xếp, mối quan hệ giữa tìm kiếm và sắp xếp? ? Nhu cầu tìm kiếm và sắp xếp Tìm kiếm: Có trong hầu hết trong các hệ thống thông tin Muốn tìm kiếm nhanh và hiệu quả dữ liệu có thứ tự sắp xếp 4 Các giải thuật tìm kiếm Có 2 giải thuật thường được áp dụng: Tìm tuyến tính và tìm nhị phân. Đặc tả: Tập dữ liệu được lưu trữ là dãy số a1, a2, . ,aN. Khai báo: int a[N]; Khóa cần tìm: int x; 5 a1 a2 a3 a4 a5 an-1 aN Tìm kiếm tuyến tính (Linear Search) Ý tưởng Lần lượt so sánh x với phần tử thứ nhất, thứ hai, . của mảng a cho đến khi gặp được phần tử cần tìm, hoặc hết mảng 6 Tìm kiếm tuyến | Chương . Giải thuật tìm kiếm Trần Minh Thái Email: minhthai@ Website: 1 Mục tiêu Xác định được vai trò của tìm kiếm và sắp xếp trong hệ thống thông tin Nắm vững và minh họa được giải thuật tìm kiếm tuyến tính và tìm kiếm nhị phân trên mảng một chiều Cài đặt được giải thuật tìm kiếm bằng ngôn ngữ C/C++ 2 Suy nghĩ 3 Tại sao hầu hết phần mềm phải có chức năng tìm kiếm và sắp xếp, mối quan hệ giữa tìm kiếm và sắp xếp? ? Nhu cầu tìm kiếm và sắp xếp Tìm kiếm: Có trong hầu hết trong các hệ thống thông tin Muốn tìm kiếm nhanh và hiệu quả dữ liệu có thứ tự sắp xếp 4 Các giải thuật tìm kiếm Có 2 giải thuật thường được áp dụng: Tìm tuyến tính và tìm nhị phân. Đặc tả: Tập dữ liệu được lưu trữ là dãy số a1, a2, . ,aN. Khai báo: int a[N]; Khóa cần tìm: int x; 5 a1 a2 a3 a4 a5 an-1 aN Tìm kiếm tuyến tính (Linear Search) Ý tưởng Lần lượt so sánh x với phần tử thứ nhất, thứ hai, . của mảng a cho đến khi gặp được phần tử cần tìm, hoặc hết mảng 6 Tìm kiếm tuyến tính Minh họa tìm x =10 Minh họa tìm x =25 7 Chưa hết mảng 7 5 12 41 10 32 13 9 15 3 1 2 3 4 5 6 7 8 9 10 7 5 12 41 10 32 13 9 15 3 1 2 3 4 5 6 7 8 9 10 10 10 25 Chưa hết mảng Đã tìm thấy tại vị trí 5 Đã hết mảng Giải thuật Bước 1: i = 1; // bắt đầu từ phần tử đầu tiên của dãy Bước 2: So sánh a[i] với x, có 2 khả năng : a[i] = x : Tìm thấy. Dừng a[i] != x : Sang Bước 3. Bước 3: i = i+1; // xét tiếp phần tử kế 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 Bước 2. 8 Nguyên tắc cài đặt hàm tìm kiếm Nếu có xuất hiện phần tử có giá trị x thì trả về vị trí tìm được Ngược lại thì trả về -1 9 Cài đặt int LinearSearch(int a[], int N, int x) { int i=0; while ((i

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.