.Tìm kiếm nhị phân

Một phần của tài liệu Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề Công nghệ thông tin Cao đẳng) (Trang 50 - 53)

Mục tiêu:

- Trình bày được giải thuật, cài đặt được giải thuật tìm kiếm nhị phân; - Giải được các bài tốn sử dụng giải thuật tìm kiếm nhị phân;

2.1.Giới thiệu phương pháp

Nếu các phần tử của A đã được sắp xếp, thì tìm kiếm nhị phân là phương pháp tìm kiếm khá thơng dụng. Nó tương tự như cách thức ta hay làm như tra một từ trong từ điển. Đối với phép tìm kiếm nhị phân thì ta ln chọn khoá ở giữa, giả sử dẫy đang xét là A1, …,A2 thì khố ở giữa dãy sẽ là Ai với i= (l+r) div 2. Nếu X<Ai thì tìm kiếm được thực hiện tiếp với A1,…,Ai-1; còn nếu ngược lại tìm kiếm lại được làm với Ai+1,…,An

2.2.Giải thuật

Các bước thực hiện ý tưởng giải thuật:

Bước 1: left = 1; right = N; // tìm kiếm trên tất cả các 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ó 3 khả năng : + a[mid] = x: Tìm thấy. Dừng

+ a[mid] > x: //tìm tiếp x trong dãy con aleft.. amid -1 : right =midle - 1;

+ a[mid] < x: //tìm tiếp x trong dãy con amid +1 .. aright : i = 3

left = mid + 1; Bước 3:

Nếu left≤ right //cịn phần tử chưa xét -> tìm tiếp.

Lặp lại Bước 2.

Ngược lại: Dừng; //Ðã xét hết tất cả các phần tử.

Cài đặt thuật toán:

Function B_search(A,n,X) Var l,r,m:Integer; Begin l:=1; r:=n; While l<=r do Begin m:=(l+r)div 2; if X < A[m] then r:=m-1; else if X > A[m] then l:=m+1; else Begin B_Search:=m; Exit; End; end; B_Search:=0; End; 2.3.Ví dụ minh họa Cho dãy số a gồm 8 phần tử: 1 2 4 5 6 8 12 15 Nếu giá trị cần tìm là 8, giải thuật được tiến hành như sau: left = 1, right = 8, midle = 4

left = 5, right = 8, midle = 6

Dừng.

Bài tập thực hành

5.1. Cho dãy số : -10 8 9 6 12 7. Minh họa việc tìm kiếm số k=15 trong dãy trên theo phương pháp tìm kiếm tuần tự.

5.2. So với tìm kiếm tuần tự thì tìm kiếm nhị phân có ưu điểm gì? Nhược điểm gì? 5.3. Cho danh sách các tên sinh viên được xếp theo thứ tự sau:

1 2 3 4 5 6 7 8 9 10

An Binh Cúc Giao Hùng Kiên Lộc Ninh Sơn Vy Áp dụng thuật tốn tìm kiếm nhị phân(Binary Search) để tìm tên Cúc, Sơn trong danh sách. Nêu rỏ giá trị của biến L, R, Mid ứng với từng lược

TÀI LIỆU THAM KHẢO

1. Đỗ Xuân Lôi Cấu trúc dữ liệu và giải thuật NXB Đại học Quốc gia Hà Nội, 2009

2. PGS.TS.Đỗ Xuân Lơi – Giáo trình Cấu trúc dữ liệu và giải thuật – Vụ giáo dục chuyên nghiệp, NXB Giáo dục - 2002

3. Trần Hạnh Nhi, Giáo trình cấu trúc dữ liệu, Trường đại học Khoa hoc

tựnhiên, tp. Hồ Chí Minh, 2003

4. PGS. TS. Hồng Nghĩa Tý, Cấu Trúc Dữ Liệu Và Thuật Toán, Xây Dựng, 2002

5. Gia Việt(Biên dịch), ESAKOV.J , WEISS T, Bài Tập Nâng Cao Cấu Trúc Dữ Liệu Cài Đặt Bằng C, Nhà xuất bản: Thống kê

Một phần của tài liệu Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề Công nghệ thông tin Cao đẳng) (Trang 50 - 53)

Tải bản đầy đủ (PDF)

(53 trang)