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 (2017)

28 5 0
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 (2017)

Đ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.1: Giải thuật tìm kiế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 tuần tự 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.

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 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ả: trữ alà dãy sốa gồm N phần tử a0…, a1, ,an-1 a  Tập a0 liệu a1 đượcalưu n-2  Khai báo: int a[n];  Khóa cần tìm: int x; an-1 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 Đã tìm thấy Chưa hếttại 12 41 10 10 32 13 15 3 Minh họa tìm x =25 25 vịmảng trí Chưa hết mảng Đã hết mảng 12 41 10 32 13 15 3 9 Giải thuật Bước 1:   i = 0;         // 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-1: Hết mảng, khơng tìm thấy Dừng Ngược lại: Lặp lại Bước 10 Cài đặt int LinearSearch2(int a[],int n,int x) { int i=0; a[n] = x; // thêm phần tử x sau mảng while (a[i]!=x ) i++; if (i==n) return -1; // tìm hết mảng else return i; // tìm thấy x vị trí i } Độ phức tạp tính tốn cấp n: T(n)=O(n) 14 Q&A 15 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 16 Minh họa tìm x = 41 x x x 14 16 19 22 41 46 51 63 71 l m m Tìm thấy x vị trí r m 17 Minh họa tìm x = 45 x x x x 14 16 19 22 41 46 51 63 71 l m m r l > r: Kết thúc: Khơng tìm thấy m m 18 Giải thuật Bước 1: left = 0; right = n-1; //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: 11/05/2021, 03:43

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

  • Cải tiến

  • Slide 14

  • Q & A

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

  • Slide 17

  • Slide 18

  • Slide 19

  • Bài tập

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

Tài liệu liên quan