Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Trần Minh Thái (Trường Đại học Hồng Bàng )

30 17 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Trần Minh Thái (Trường Đại học Hồng Bàng )

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 2: Giải thuật tìm kiếm cung cấp cho người học các kiến thức: Nhu cầu tìm kiếm, sắp xếp dữ liệu trong một hệ thống thông tin, các giải thuật tìm kiếm nội, tìm kiếm tuyến tính, tìm kiếm nhị phân,... Mời các bạn cùng tham khảo.

Chương 2.1 Giải thuật tìm kiếm Trần Minh Thái Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Mục tiêu Xác định vai trị tìm kiếm xếp hệ thống thông tin Nắm vững minh họa giải thuật tìm tìm kiếm nhị phân mảng chiều Cài đặt giải thuật tìm kiếm ngơn ngữ C/C++ Nhu cầu tìm kiếm xếp Tìm kiếm: Có hầu hết hệ thống thơng tin Muốn tìm kiếm nhanh hiệu  liệu có thứ tự  xếp Vấn đề tìm kiếm Dựa vào phần thơng tin gọi khố (key)  tìm mẫu tin (record) chứa thơng tin khác liên quan với khố Có thể có nhiều mẫu tin khơng có mẫu tin chứa khố cần tìm Đánh giá giải thuật tìm kiếm Tìm kiếm thường tác vụ tốn nhiều thời gian chương trình Tổ chức cấu trúc liệu giải thuật cho việc tìm kiếm ảnh hưởng lớn đến hiệu suất hoạt động chương trình Thơng số đo chủ yếu số lần so sánh khố cần tìm với mẫu tin khác Phân loại Tìm kiếm nội tìm kiếm ngoại Dữ liệu lưu thiết bị lưu trữ đĩa hay băng từ: tìm kiếm ngoại Dữ liệu lưu trữ nhớ chính: tìm kiếm nội Các giải thuật tìm kiếm Có giải thuật thường áp dụng: tìm tìm nhị phân Đặc tả: a1 a2 a3 a4 a5 … an-1 aN  Tập liệu lưu trữ dãy số a1, a2, ,aN  Khai báo: int a[N];  Khóa cần tìm: int x; Tìm (Linear Search) Ý tưởng Lần lượt so sánh x với phần tử thứ nhất, thứ hai, mảng a gặp phần tử cần tìm, hết mảng Tìm Minh họa tìm x =10 10 12 41 10 32 13 15 3 10 Đã tìm thấy Chưa hết vịmảng trí Minh họa tìm x =25 Chưa hết mảng mảng Đã hết 25 12 41 10 32 13 15 3 10 Giải thuật Bước 1:   i = 1;         // phần tử dãy Bước 2: So sánh a[i] với x, có khả : a[i] = x : Tìm thấy Dừng a[i] != x :  Sang Bước Bước 3:  i = i+1;      // xét tiếp phần tử kế 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 10 Q&A 16 Tìm kiếm nhị phân (Binary Search) Ý tưởng Áp dụng dãy số có thứ tự Mỗi bước tiến hành so sánh x với phần tử dãy hành để định phạm vi tìm 17 Minh họa tìm x = 41 x x x 14 16 19 22 41 46 51 63 71 10 l Tìm thấy x vị trí m r m m 18 Minh họa tìm x = 45 x x x x 14 16 19 22 41 46 51 63 71 10 l m m r l > r: Kết thúc: Khơng tìm thấy m m 19 Giải thuật Bước 1: left = 1; right = N; //tìm kiếm tất phần tử Bước 2: mid = (left+right)/2; // lấy mốc so sánh So sánh a[mid] với x, có khả :  a[mid] = x: Tìm thấy Dừng  a[mid] > x: //tìm tiếp x dãy aleft amid -1 right =mid - 1;  a[mid] < x: //tìm tiếp x dãy amid +1 aright left = mid + 1; Bước 3: Nếu left

Ngày đăng: 09/05/2021, 18:25

Mục lục

  • Slide 1

  • Mục tiêu

  • Nhu cầu tìm kiếm và sắp xếp

  • Vấn đề tìm kiếm

  • Đánh giá giải thuật tìm kiếm

  • Phân loại

  • Các giải thuật tìm kiếm

  • Tìm tuần tự (Linear Search)

  • Tìm tuần tự

  • Slide 10

  • Nguyên tắc cài đặt hàm tìm kiếm

  • Slide 12

  • Slide 13

  • Cải tiến

  • Slide 15

  • Q & A

  • Tìm kiếm nhị phân (Binary Search)

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan