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

26 10 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 (2016)

Đ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 các kiến thức giúp người học có thể: 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#.

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 kiếm tuyến tính 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 dãy Có giải thuật thường áp dụng: Tìm tìm nhị phân Đặc tả:  Tập liệu lưu trữ dãy số a1, a2, ,aN a a4 int[N]; a5 … inta[]a Khai abáo: = new  Khóa cần tìm: int x; an-1 aN Tìm kiế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 kiế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 10 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 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ả năng: 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 Cài đặt int LinearSearch(int []a, int N, int x) { int i=0; while ((i r: Kết thúc: Khơng tìm thấy m m 20 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

Từ khóa liên quan

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 trên dãy

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

  • Tìm kiếm tuần tự

  • Slide 10

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

  • Slide 12

  • Bài tập 1

  • Cải tiến

  • Slide 15

  • Bài tập 2

  • Q & A

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

  • Slide 19

  • Slide 20

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

  • Đang cập nhật ...

Tài liệu liên quan